2017-08-04 81 views
0

我正在尝试测量scrapy中系统的吞吐量,并试图找到何时HTTP请求已被触发以及何时完成已在scrapy中完成。如何查找请求何时开始以及何时结束scrapy

任何找到解决方案的方向是高度赞赏。

+0

这是一个非常广泛的问题..你在寻找确定你的解析能力是否与你的下载速度有关吗?我会快速浏览scrapy的[架构概述](https://docs.scrapy.org/en/latest/topics/architecture.html),然后回来一些更具体的内容。 – Aaron

回答

1

您可以使用自定义的中间件:

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准确,但它应该是准确到足以给出一个通用的概述。

相关问题