如何查找请求何时开始以及何时结束scrapy
问题描述:
我正在尝试测量scrapy中系统的吞吐量,并试图找到何时HTTP请求已被触发以及何时完成已在scrapy中完成。如何查找请求何时开始以及何时结束scrapy
任何找到解决方案的方向是高度赞赏。
答
您可以使用自定义的中间件:
class MeasureMiddleware:
requests = []
def process_request(self, request, spider):
# store the time and url of every outgoing request
self.requests.append((request.url, datetime.now()))
def process_response(self, request, response, spider):
# for everyone response check if one of tracked requests cameback
# if so, print start time and current time
item = [r for r in self.requests if r[0] == request.url]
if not item:
return
url, start_date = item[0]
logging.info(f'request {url} {start_date} - {datetime.now()}')
self.requests.remove(item)
然后激活下载中间件
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.MeasureMiddleware': 543,
}
值得一提的是,由于scrapy的异步性质也不会MS准确,但它应该是准确到足以给出一个通用的概述。
这是一个非常广泛的问题..你在寻找确定你的解析能力是否与你的下载速度有关吗?我会快速浏览scrapy的[架构概述](https://docs.scrapy.org/en/latest/topics/architecture.html),然后回来一些更具体的内容。 – Aaron