在所有项目通过管道之前,Scrapy engine_stopped信号被触发了?

时间:2015-05-26 18:20:57

标签: python scrapy signals twisted pipeline

我是Scrapy的亲戚。我正在尝试实现一个功能,该功能可以跟踪爬行命令中Scrapy蜘蛛所需的时间,直到完成所有内插/更新。

我写了一个使用engine_startedengine_stopped extensionsignals。除了在管道中插入/更新期间中途触发engine_stopped信号这一事实以外,这种方法工作正常。

所以我的问题是:有没有办法检查所有管道是否为空,scrapy是否已完成爬行和插入/更新?

注意:我在我的管道中使用twisted.enterprise.adbapi,我的直觉是,这可能是engine_stopped信号提前解雇的原因。

2 个答案:

答案 0 :(得分:0)

您可以更新item_scraped signal

内的执行时间
  

在项目已经通过所有项目管道阶段(未被删除)后,在物品被刮取时发送。

这样,当最后一个项目通过“管道”阶段时 - 你将抓住它并测量你的总执行时间。

(未经测试)

答案 1 :(得分:0)

另一种方法可能是实现自己的Feed Exporter

finish_exporting方法可以让您对结束时间有所了解。