scrapyd的的进程是长驻吗?还是需要的时候开一下?

来源:1-1 python分布式爬虫打造搜索引擎简介

慕粉3691223

2019-05-29

在部署的时候,scrapyd是一个job一个进程的,我现在要开始一个 sprider时,是1,start job 2,往redis扔start_url,然后我会有一个定时器,定时找requests的数量,如果为空则 给scrapyd发kill job的请求.

想问下其它人的做法是怎样的?

写回答

1回答

bobby

2019-05-30

scrapyd是一个常驻服务,因为随时需要接受客户端发送过来的请求,scrapy-redis因为是使用阻塞的redis请求方式,所以如果redis队列为空,会一直阻塞在获取redis队列的代码出,此时无法接受scrapyd发送的停止命令,所以这个时候可以自己在获取redis的队列的地方自己做一个判断,通过向redis的队列中入库一个特殊字符接收到以后就可以停止爬虫,这样控制实际上比scrapyd更方便,因为逻辑只需要向redis的队列中入库一个特殊字符就行了,而且最好是使用优先级队列,不然特殊字符没法随时停止爬虫

0
1
慕粉3691223
非常感谢!
2019-05-30
共1条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程