mirror of https://github.com/scrapy/scrapy.git
collect download latencies in 'download_latency' request/response meta key
This commit is contained in:
parent
668dfcabf3
commit
bd8d7f5cf4
|
|
@ -1,3 +1,4 @@
|
|||
from time import time
|
||||
from urlparse import urlparse, urlunparse, urldefrag
|
||||
|
||||
from twisted.python import failure
|
||||
|
|
@ -97,7 +98,8 @@ class ScrapyHTTPClientFactory(HTTPClientFactory):
|
|||
self.headers = Headers(request.headers)
|
||||
self.response_headers = None
|
||||
self.timeout = request.meta.get('download_timeout') or timeout
|
||||
self.deferred = defer.Deferred().addCallback(self._build_response)
|
||||
self.start_time = time()
|
||||
self.deferred = defer.Deferred().addCallback(self._build_response, request)
|
||||
|
||||
self._set_connection_attributes(request)
|
||||
|
||||
|
|
@ -110,7 +112,8 @@ class ScrapyHTTPClientFactory(HTTPClientFactory):
|
|||
# just in case a broken http/1.1 decides to keep connection alive
|
||||
self.headers.setdefault("Connection", "close")
|
||||
|
||||
def _build_response(self, body):
|
||||
def _build_response(self, body, request):
|
||||
request.meta['download_latency'] = self.headers_time-self.start_time
|
||||
status = int(self.status)
|
||||
headers = Headers(self.response_headers)
|
||||
respcls = responsetypes.from_args(headers=headers, url=self.url)
|
||||
|
|
@ -125,4 +128,5 @@ class ScrapyHTTPClientFactory(HTTPClientFactory):
|
|||
self.path = self.url
|
||||
|
||||
def gotHeaders(self, headers):
|
||||
self.headers_time = time()
|
||||
self.response_headers = headers
|
||||
|
|
|
|||
Loading…
Reference in New Issue