use settings.timeout_fallback bool for socket.setdefaulttimeout() fallback
authorJensDiemer <git@jensdiemer.de>
Mon, 15 Aug 2011 15:03:37 +0000 (17:03 +0200)
committerJensDiemer <git@jensdiemer.de>
Mon, 15 Aug 2011 15:03:37 +0000 (17:03 +0200)
requests/config.py
requests/models.py

index 1ba438fd0676838e7ed761c2fe72d1dbe8f98c3a..89e40c983f93259db39a8b5293d0ac94a31ad7fb 100644 (file)
@@ -57,3 +57,4 @@ settings = Settings()
 settings.base_headers = {'User-Agent': 'python-requests.org'}
 settings.accept_gzip = True
 settings.proxies = None
+settings.timeout_fallback = True # Use socket.setdefaulttimeout() as fallback?
index 5f7786914fdbce85269f7bfd4ed5ea74559a57f6..845a778e9151435ecac89b920a5511379a0e4014 100644 (file)
@@ -38,7 +38,7 @@ class Request(object):
         params=dict(), auth=None, cookiejar=None, timeout=None, redirect=False,
         allow_redirects=False, proxies=None):
 
-        #socket.setdefaulttimeout(timeout)
+        #: Float describ the timeout of the request. (Use socket.setdefaulttimeout() as fallback)
         self.timeout = timeout
 
         #: Request URL.
@@ -313,11 +313,17 @@ class Request(object):
                     # 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)
+                    
+                    if settings.timeout_fallback:
+                        # fall-back and use global socket timeout (This is not thread-safe!)
+                        old_timeout = socket.getdefaulttimeout()
+                        socket.setdefaulttimeout(self.timeout)
+                        
                     resp = opener(req)
-                    socket.setdefaulttimeout(old_timeout)
+                    
+                    if settings.timeout_fallback:
+                        # restore gobal timeout
+                        socket.setdefaulttimeout(old_timeout)
 
                 if self.cookiejar is not None:
                     self.cookiejar.extract_cookies(resp, req)