Use socket.setdefaulttimeout(timeout) only if timeout argument doesn't exist (Python...
authorJensDiemer <git@jensdiemer.de>
Mon, 15 Aug 2011 14:51:33 +0000 (16:51 +0200)
committerJensDiemer <git@jensdiemer.de>
Mon, 15 Aug 2011 14:51:33 +0000 (16:51 +0200)
AUTHORS
requests/models.py

diff --git a/AUTHORS b/AUTHORS
index 38528a6..196f0cd 100644 (file)
--- 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
index 08f3e32..5f77869 100644 (file)
@@ -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)