mirror of
https://github.com/kennethreitz/requests3.git
synced 2026-06-05 23:10:16 +00:00
Time how long each request takes
Stored as attribute Response.time_taken
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user