From 647cdd38476f6b21887d3ebcd6e0c79a6c97baa1 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Mon, 15 Aug 2011 16:51:33 +0200 Subject: [PATCH] Use socket.setdefaulttimeout(timeout) only if timeout argument doesn't exist (Python <2.6) - https://github.com/kennethreitz/requests/issues/112 --- AUTHORS | 3 ++- requests/models.py | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/AUTHORS b/AUTHORS index 38528a61..196f0cd2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -31,4 +31,5 @@ Patches and Suggestions - Tamás Gulácsi - Rubén Abad - Peter Manser -- Jeremy Selie \ No newline at end of file +- Jeremy Selie +- Jens Diemer \ No newline at end of file diff --git a/requests/models.py b/requests/models.py index 08f3e321..5f778691 100644 --- a/requests/models.py +++ b/requests/models.py @@ -38,7 +38,8 @@ class Request(object): params=dict(), auth=None, cookiejar=None, timeout=None, redirect=False, allow_redirects=False, proxies=None): - socket.setdefaulttimeout(timeout) + #socket.setdefaulttimeout(timeout) + self.timeout = timeout #: Request URL. self.url = url @@ -306,7 +307,17 @@ class Request(object): try: opener = self._get_opener() - resp = opener(req) + try: + resp = opener(req, timeout=self.timeout) + except TypeError, err: + # timeout argument is new since Python v2.6 + if not "timeout" in str(err): + raise + # set global socket timeout + old_timeout = socket.getdefaulttimeout() + socket.setdefaulttimeout(self.timeout) + resp = opener(req) + socket.setdefaulttimeout(old_timeout) if self.cookiejar is not None: self.cookiejar.extract_cookies(resp, req)