症状:系统的吞吐量比较期望的要小,并且下载器中的Request
对象有时看起来比CONCURRENT_REQUESTS
还要多。
示例:我们使用0.25秒的下载延迟来模仿下载1000个网页,默认的并发水平是16个,根据前面的公式,大概需要花19s的时间。我们在一个pipeline中使用crawler.engine.download()
来发起一个额外的HTTP请求到 一个假的API,这个请求的响应需要1s的时间。运行一下程序:
$ time scrapy crawl speed -s SPEED_TOTAL_ITEMS=1000 -s
SPEED_T_RESPONSE=0.25 -s SPEED_API_T_RESPONSE=1 -s
SPEED_PIPELINE_API_VIA_DOWNLOADER=1
...
s/edule d/load scrape p/line done mem
968 32 32 32