Scrapy-Redis爬虫启动后,是如何做到进程不Close的
来源:10-8 scrapy-redis源码分析- scheduler.py、spider.py-
慕尼黑7546459
2020-01-15
老师,直接使用Scrapy的话,在爬虫执行结束后,会被close, 最后的日志基本像这样:
2020-01-15 11:36:51 [scrapy.core.engine] INFO: Spider closed
(finished)
那么,scrapy-redis 是在哪里实现,当没有爬取任务的时候,进程不被关闭的呢?
另外,关于scrapy-redis, 还有几个疑问,顺便请教下老师
1、如果不需要去修改源代码进行扩展,是不是可以通过:pip install scrapy-redis 安装就行,而不需要将源码集成到项目中啊? (这个我看文档是支持直接 install 和下载源码 2种方式的)
2、当往队列发布start_urls的消息后, scrapy是如何实时监听到消息的(中间可能没有执行任务,当往队列push url, 能实时监听到),这个我在源码中一直没找到
2回答
-
bobby
2020-01-19
你下面虽然问题比较多,但是都可以归到一个函数上 ,每次获取下一个url都是这行代码完成的,你只要搞清楚这里的queue是怎么初始化的以及获取的时候是从哪里获取的就知道怎么办了
00 -
bobby
2020-01-15
scrapy-redis不会关闭,因为scrapy会一直等待redis返回数据,如果一直没有返回会一直阻塞住,如果想关闭可以改一下源码,把从redis中获取数据设置一个timeout,如果超时没有获取到数据就发送一个关闭spider的信号就行了
通过pip安装没有问题,。但是我个人更加建议直接配置源码,因为有可能你就得这个不够灵活需要修改源码,通过pip安装的源码你修改了放到线上就没法用了,基本上所有的python库都可以直接拷贝源码
start_urls只有在启动的时候会去用,如果你要想push一个url不应该是push到这个队列而应该是url的队列
012020-01-17
相似问题