युपीडी: पास नहीं सवाल है क्योंकि मुझे लगता है कि मेरे रास्ते इतना स्पष्ट रूपScrapy अनुरोध + प्रतिक्रिया + डाउनलोड समय
यह आइटम करने के लिए इसे बचाने के लिए वर्तमान अनुरोध + प्रतिक्रिया + डाउनलोड समय प्राप्त करने के लिए संभव है होना चाहिए नहीं है ?
"सादे" अजगर में मुझे क्या करना
start_time = time()
urllib2.urlopen('http://example.com').read()
time() - start_time
लेकिन मैं कैसे Scrapy के साथ ऐसा कर सकते हैं?
युपीडी:
समाधान मेरे लिए enought लेकिन मैं परिणामों की गुणवत्ता के बारे में सुनिश्चित नहीं हूँ। आप समय समाप्त त्रुटियों के साथ कई कनेक्शन है, तो Download time
गलत हो सकता है (यहां तक कि DOWNLOAD_TIMEOUT * 3)
लिए
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)
मकड़ी के अंदर
। 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)
में पीई