scrapy-redis raise DontCloseSpider这个错误是为什么爬虫就一直运行?
代码位置 scrapy_redis/spiders.py
spider_idle这个函数是 当spider进入空闲(idle)状态时该信号被发送。空闲意味着 具体的https://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/signals.html ,关于scrapy中的信号可以自行搜索,具体的参照scrapy/utils/signal.py中的代码
具体流程为 当爬虫处于空闲状态时,就会调用到spider_idle 这个函数,这个函数中进行一系列操作之后抛出DontCloseSpider异常,因为这个异常是scrapy中的信号,就会被scrapy/utils/signal.py send_catch_log这个函数捕获
通过debug调试可以进到
1 这个包的具体意思可自行搜索
2继续调试就进到了捕获函数scrapy/utils/signal.py send_catch_log
后面就进到了调度器,进行后面的操作,后面就是一直这样的循环