scrapyd的的进程是长驻吗?还是需要的时候开一下?
来源:1-1 python分布式爬虫打造搜索引擎简介
慕粉3691223
2019-05-29
在部署的时候,scrapyd是一个job一个进程的,我现在要开始一个 sprider时,是1,start job 2,往redis扔start_url,然后我会有一个定时器,定时找requests的数量,如果为空则 给scrapyd发kill job的请求.
想问下其它人的做法是怎样的?
写回答
1回答
-
scrapyd是一个常驻服务,因为随时需要接受客户端发送过来的请求,scrapy-redis因为是使用阻塞的redis请求方式,所以如果redis队列为空,会一直阻塞在获取redis队列的代码出,此时无法接受scrapyd发送的停止命令,所以这个时候可以自己在获取redis的队列的地方自己做一个判断,通过向redis的队列中入库一个特殊字符接收到以后就可以停止爬虫,这样控制实际上比scrapyd更方便,因为逻辑只需要向redis的队列中入库一个特殊字符就行了,而且最好是使用优先级队列,不然特殊字符没法随时停止爬虫
012019-05-30
相似问题