Move the timing work to Session.send
authorIan Cordasco <graffatcolmingov@gmail.com>
Mon, 28 Jan 2013 16:53:02 +0000 (11:53 -0500)
committerIan Cordasco <graffatcolmingov@gmail.com>
Mon, 28 Jan 2013 16:53:02 +0000 (11:53 -0500)
per @kennethreitz's request

requests/adapters.py
requests/sessions.py

index d4f5d5b..c350ae4 100644 (file)
@@ -9,7 +9,6 @@ and maintain connections.
 """
 
 import socket
-import datetime
 
 from .models import Response
 from .packages.urllib3.poolmanager import PoolManager, ProxyManager
@@ -156,7 +155,6 @@ class HTTPAdapter(BaseAdapter):
         url = self.request_url(request, proxies)
 
         chunked = not (request.body is None or 'Content-Length' in request.headers)
-        start = datetime.datetime.utcnow()
 
         try:
             if not chunked:
@@ -200,7 +198,6 @@ class HTTPAdapter(BaseAdapter):
                     preload_content=False,
                     decode_content=False
                 )
-            finish = datetime.datetime.utcnow()
 
         except socket.error as sockerr:
             raise ConnectionError(sockerr)
@@ -217,7 +214,6 @@ class HTTPAdapter(BaseAdapter):
                 raise Timeout('Request timed out.')
 
         r = self.build_response(request, resp)
-        r.elapsed = finish - start
 
         if not stream:
             r.content
index e607adf..de3f5b7 100644 (file)
@@ -9,6 +9,7 @@ requests (cookies, auth, proxies).
 
 """
 import os
+from datetime import datetime
 
 from .compat import cookielib
 from .cookies import cookiejar_from_dict
@@ -368,7 +369,9 @@ class Session(SessionRedirectMixin):
         """Send a given PreparedRequest."""
         hooks = request.hooks
         adapter = self.get_adapter(url=request.url)
+        start = datetime.utcnow()
         r = adapter.send(request, **kwargs)
+        r.elapsed = datetime.utcnow() - start
         # Response manipulation hooks
         r = dispatch_hook('response', hooks, r)
         return r