1

我需要在发出超过 1 次的重试请求时向我的蜘蛛发送一条消息。

我正在考虑使用信号并修补scrapy中的内置RetryMiddleWare,以便在满足条件时发送此类信号。

它会起作用吗?

如何在 Scrapy 中触发信号?

我在网上没有找到任何线索。

谢谢

4

1 回答 1

2

RetryMiddleware源代码在这里 - 查看它并将其子类化以放置所需的功能:

scrapy.contrib.downloadermiddleware.retry.RetryMiddleware

然后禁用原始并启用修改后的:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': None,
    'middlewares.MyRetryMiddleware': 500,
}

在您自定义的中间件中,您可以调用蜘蛛的方法来执行操作,或使用调度程序发出自定义信号(我会选择第一种方法)。

于 2012-07-29T14:32:52.017 回答