你好,大佬,请问一个问题,我用scrapy-redis执行爬虫的时候,设置最大并发是20,但是怎么感觉像创建20个队列一样,上一个20执行完之后,下一个20再执行,大佬,您能为我解答一下吗,感激不尽
zhanghongdou opened this issue · comments
zhanghongdou commented
你好,大佬,请问一个问题,我用scrapy-redis执行爬虫的时候,设置最大并发是20,但是怎么感觉像创建20个队列一样,上一个20执行完之后,下一个20再执行,大佬,您能为我解答一下吗,感激不尽
Zerorigin commented
首先你需要贴出你的爬虫设置(所有并发相关的)
其次尽量用英文提问
话说我很久没用 scrapy-redis 了
而且之前使用时一直特地限制并发
所以都忘了具体是啥情况
只能期望有其他人帮你回答了
Jeremy Chou commented
@zhanghongdou
最大并發是 scrapy 內建選項,並非 scrapy-redis,可以去 scrapy 群取得更詳細資訊。
以你上述問題來說,答案是「對」,python 的 multiprocessing 是透過排程不斷在執行序間轉換,形成一種「類併發」。而 scrapy 調用這方法使用的是 queue,將最大併發數的 requests 打入 queue,再發給執行序們執行。
可以參考
文件:https://docs.scrapy.org/en/latest/topics/settings.html
程式碼:https://github.com/scrapy/scrapy/blob/master/scrapy/core/downloader/__init__.py