我是Scrapy的亲戚。我正在尝试实现一个功能,该功能可以跟踪爬行命令中Scrapy蜘蛛所需的时间,直到完成所有内插/更新。
我写了一个使用engine_started
和engine_stopped
extension的signals。除了在管道中插入/更新期间中途触发engine_stopped
信号这一事实以外,这种方法工作正常。
所以我的问题是:有没有办法检查所有管道是否为空,scrapy是否已完成爬行和插入/更新?
注意:我在我的管道中使用twisted.enterprise.adbapi
,我的直觉是,这可能是engine_stopped
信号提前解雇的原因。
答案 0 :(得分:0)
您可以更新item_scraped
signal:
在项目已经通过所有项目管道阶段(未被删除)后,在物品被刮取时发送。
这样,当最后一个项目通过“管道”阶段时 - 你将抓住它并测量你的总执行时间。
(未经测试)
答案 1 :(得分:0)
另一种方法可能是实现自己的Feed Exporter
finish_exporting方法可以让您对结束时间有所了解。