use settings.timeout_fallback bool for socket.setdefaulttimeout() fallback

This commit is contained in:
JensDiemer
2011-08-15 17:03:37 +02:00
parent 647cdd3847
commit 88f79b74ce
2 changed files with 12 additions and 5 deletions
+1
View 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?
+11 -5
View 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)