2017-08-04 79 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準確,但它應該是準確到足以給出一個通用的概述。

相關問題