Revert "Revert "Make safe_mode play nice with timeout (fixes #312)""

This reverts commit 91766548d1.
This commit is contained in:
Ori Livneh
2011-12-22 17:50:43 -05:00
parent 91766548d1
commit 2c0ff95d4d
2 changed files with 16 additions and 3 deletions
+5 -3
View File
@@ -438,6 +438,10 @@ class Request(object):
# Attach Cookie header to request.
self.headers['Cookie'] = cookie_header
# If the request fails but exceptions are suppressed,
# we'll build a blank response.
r = None
try:
# Send the request.
r = conn.urlopen(
@@ -458,8 +462,6 @@ class Request(object):
except MaxRetryError, e:
if not self.config.get('safe_mode', False):
raise ConnectionError(e)
else:
r = None
except (_SSLError, _HTTPError), e:
if not self.config.get('safe_mode', False):
@@ -597,7 +599,7 @@ class Response(object):
def generate():
chunk = []
while 1:
while True:
c = self.raw.read(1)
if not c:
break
+11
View File
@@ -619,6 +619,17 @@ class RequestsTestSuite(unittest.TestCase):
lines = '\n'.join(r.iter_lines())
self.assertEqual(lines, quote)
def test_timeout(self):
# When not in safe mode, should raise Timeout exception
with self.assertRaises(requests.exceptions.Timeout):
r = requests.get(httpbin('stream', '1000'), timeout=0.0001)
# In safe mode, should return a blank response
r = requests.get(httpbin('stream', '1000'), timeout=0.0001,
config=dict(safe_mode=True))
self.assertIsNone(r.content)
if __name__ == '__main__':
unittest.main()