在所有项目通过管道之前触发 Scrapy engine_stopped 信号?
Scrapy engine_stopped signal fired before all items are through pipelines?
对于Scrapy,我是一个相对菜鸟。我正在尝试实现一个功能来跟踪 Scrapy 蜘蛛从爬网命令到所有 insets/updates 完成所需的时间。
我写了一篇extension that uses the engine_started
and engine_stopped
signals。这工作正常,除了 engine_stopped
信号在管道中的 inserts/updates 中途被触发。
所以我的问题是:有什么方法可以检查所有管道是否为空并且 scrapy 是否完全完成抓取并且inserting/updating?
注意:我在管道中使用 twisted.enterprise.adbapi
,我的直觉是这可能是 engine_stopped
信号提前触发的原因。
你可以更新里面的执行时间 item_scraped
signal:
Sent when an item has been scraped, after it has passed all the Item Pipeline stages (without being dropped).
这样,当最后一项通过 "pipeline" 阶段时 - 您将捕捉到它并测量您的总执行时间。
(未测试)
另一种方法可能是实现您自己的 Feed Exporter
finish_exporting 方法应该让您对结束时间有一个正确的认识。
对于Scrapy,我是一个相对菜鸟。我正在尝试实现一个功能来跟踪 Scrapy 蜘蛛从爬网命令到所有 insets/updates 完成所需的时间。
我写了一篇extension that uses the engine_started
and engine_stopped
signals。这工作正常,除了 engine_stopped
信号在管道中的 inserts/updates 中途被触发。
所以我的问题是:有什么方法可以检查所有管道是否为空并且 scrapy 是否完全完成抓取并且inserting/updating?
注意:我在管道中使用 twisted.enterprise.adbapi
,我的直觉是这可能是 engine_stopped
信号提前触发的原因。
你可以更新里面的执行时间 item_scraped
signal:
Sent when an item has been scraped, after it has passed all the Item Pipeline stages (without being dropped).
这样,当最后一项通过 "pipeline" 阶段时 - 您将捕捉到它并测量您的总执行时间。
(未测试)
另一种方法可能是实现您自己的 Feed Exporter
finish_exporting 方法应该让您对结束时间有一个正确的认识。