From d93731213afad71d8125551ebcbdda0a66691622 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 21 Apr 2011 14:52:58 +0200 Subject: [PATCH 1/2] Implement optional timeout for request functions --- requests/core.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/requests/core.py b/requests/core.py index 625d845f..6408afc1 100644 --- a/requests/core.py +++ b/requests/core.py @@ -14,6 +14,7 @@ from __future__ import absolute_import import urllib import urllib2 +import socket import zlib from urllib2 import HTTPError @@ -63,13 +64,15 @@ class Request(object): _METHODS = ('GET', 'HEAD', 'PUT', 'POST', 'DELETE') def __init__(self, url=None, headers=dict(), files=None, method=None, - data=dict(), auth=None, cookiejar=None): + data=dict(), auth=None, cookiejar=None, timeout=None): self.url = url self.headers = headers self.files = files self.method = method self.data = data + + socket.setdefaulttimeout(timeout) # url encode data if it's a dict if hasattr(data, 'items'): @@ -448,13 +451,14 @@ def request(method, url, **kwargs): r = Request(method=method, url=url, data=data, headers=kwargs.pop('headers', {}), cookiejar=kwargs.pop('cookies', None), files=kwargs.pop('files', None), - auth=kwargs.pop('auth', auth_manager.get_auth(url))) + auth=kwargs.pop('auth', auth_manager.get_auth(url)), + timeout=kwargs.pop('timeout', None)) r.send() return r.response -def get(url, params={}, headers={}, cookies=None, auth=None): +def get(url, params={}, headers={}, cookies=None, auth=None, timeout=None): """Sends a GET request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -464,10 +468,10 @@ def get(url, params={}, headers={}, cookies=None, auth=None): :param auth: (optional) AuthObject to enable Basic HTTP Auth. """ - return request('GET', url, params=params, headers=headers, cookies=cookies, auth=auth) + return request('GET', url, params=params, headers=headers, cookies=cookies, auth=auth, timeout=timeout) -def head(url, params={}, headers={}, cookies=None, auth=None): +def head(url, params={}, headers={}, cookies=None, auth=None, timeout=None): """Sends a HEAD request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -477,10 +481,10 @@ def head(url, params={}, headers={}, cookies=None, auth=None): :param auth: (optional) AuthObject to enable Basic HTTP Auth. """ - return request('HEAD', url, params=params, headers=headers, cookies=cookies, auth=auth) + return request('HEAD', url, params=params, headers=headers, cookies=cookies, auth=auth, timeout=timeout) -def post(url, data={}, headers={}, files=None, cookies=None, auth=None): +def post(url, data={}, headers={}, files=None, cookies=None, auth=None, timeout=None): """Sends a POST request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -491,10 +495,10 @@ def post(url, data={}, headers={}, files=None, cookies=None, auth=None): :param auth: (optional) AuthObject to enable Basic HTTP Auth. """ - return request('POST', url, data=data, headers=headers, files=files, cookies=cookies, auth=auth) + return request('POST', url, data=data, headers=headers, files=files, cookies=cookies, auth=auth, timeout=timeout) -def put(url, data='', headers={}, files={}, cookies=None, auth=None): +def put(url, data='', headers={}, files={}, cookies=None, auth=None, timeout=None): """Sends a PUT request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -505,10 +509,10 @@ def put(url, data='', headers={}, files={}, cookies=None, auth=None): :param auth: (optional) AuthObject to enable Basic HTTP Auth. """ - return request('PUT', url, data=data, headers=headers, files=files, cookies=cookies, auth=auth) + return request('PUT', url, data=data, headers=headers, files=files, cookies=cookies, auth=auth, timeout=timeout) -def delete(url, params={}, headers={}, cookies=None, auth=None): +def delete(url, params={}, headers={}, cookies=None, auth=None, timeout=None): """Sends a DELETE request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -518,7 +522,7 @@ def delete(url, params={}, headers={}, cookies=None, auth=None): :param auth: (optional) AuthObject to enable Basic HTTP Auth. """ - return request('DELETE', url, params=params, headers=headers, cookies=cookies, auth=auth) + return request('DELETE', url, params=params, headers=headers, cookies=cookies, auth=auth, timeout=timeout) From 39e9424f012dcae29d9b64d97582f7a80206c5d0 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 21 Apr 2011 14:55:01 +0200 Subject: [PATCH 2/2] Update AUTHORS --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 62a2414d..e09b3668 100644 --- a/AUTHORS +++ b/AUTHORS @@ -17,3 +17,4 @@ Patches and Suggestions - Justin Murphy - Rob Madole - Aram Dulyan +- Johannes Gorset