Time how long each request takes

Stored as attribute Response.time_taken
This commit is contained in:
Chris Lee
2013-01-23 18:14:47 -08:00
parent ac5e6807fa
commit d4aaef1e9a
3 changed files with 12 additions and 0 deletions
+4
View File
@@ -9,6 +9,7 @@ and maintain connections.
"""
import socket
import time
from .models import Response
from .packages.urllib3.poolmanager import PoolManager, ProxyManager
@@ -155,6 +156,7 @@ class HTTPAdapter(BaseAdapter):
url = self.request_url(request, proxies)
chunked = not (request.body is None or 'Content-Length' in request.headers)
start = time.time()
try:
if not chunked:
@@ -198,6 +200,7 @@ class HTTPAdapter(BaseAdapter):
preload_content=False,
decode_content=False
)
finish = time.time()
except socket.error as sockerr:
raise ConnectionError(sockerr)
@@ -214,6 +217,7 @@ class HTTPAdapter(BaseAdapter):
raise Timeout('Request timed out.')
r = self.build_response(request, resp)
r.time_taken = finish - start
if not stream:
r.content
+3
View File
@@ -471,6 +471,9 @@ class Response(object):
#: A CookieJar of Cookies the server sent back.
self.cookies = cookiejar_from_dict({})
#: The amount of time taken for the response to arrive (in seconds).
self.time_taken = 0.0
def __repr__(self):
return '<Response [%s]>' % (self.status_code)
+5
View File
@@ -323,5 +323,10 @@ class RequestsTestCase(unittest.TestCase):
self.assertEqual(cookie.domain, domain)
self.assertEqual(cookie._rest['HttpOnly'], rest['HttpOnly'])
def test_time_taken_blank(self):
r = requests.get(httpbin('get'))
self.assertTrue(r.time_taken > 0.0)
if __name__ == '__main__':
unittest.main()