UPD:接近していない質問は、私はScrapy要求+応答+ダウンロード時間
それが項目にそれを保存するために、現在の要求+応答+ダウンロード時間を取得することは可能ですがあるべきな私のやり方はそれほど明確ではないと思うので、 ? "プレーン" Pythonで
I行う
start_time = time()
urllib2.urlopen('http://example.com').read()
time() - start_time
しかし、どのように私はScrapyでこれを行うことができますか?
UPD:私のためにenought
ソリューションが、私は結果の品質のよく分かりません。あなたはタイムアウトエラーと多くの接続を持っている場合はDownload time
settings.py
DOWNLOADER_MIDDLEWARES = {
'myscraper.middlewares.DownloadTimer': 0,
}
middlewares.py
from time import time
from scrapy.http import Response
class DownloadTimer(object):
def process_request(self, request, spider):
request.meta['__start_time'] = time()
# this not block middlewares which are has greater number then this
return None
def process_response(self, request, response, spider):
request.meta['__end_time'] = time()
return response # return response coz we should
def process_exception(self, request, exception, spider):
request.meta['__end_time'] = time()
return Response(
url=request.url,
status=110,
request=request)
のために(でもDOWNLOAD_TIMEOUT * 3)
間違っている可能性があります。 py in in def parse(...
log.msg('Download time: %.2f - %.2f = %.2f' % (
response.meta['__end_time'], response.meta['__start_time'],
response.meta['__end_time'] - response.meta['__start_time']
), level=log.DEBUG)