0

想知道是否有人知道在使用 scrapy 时,scrapy-crawlera 中间件是否处理 429 状态码,或者我是否需要实现自己的重试逻辑?

我似乎在任何地方都找不到它的记录

4

2 回答 2

1

回答你的问题:scrapy-crawlera中间件不处理429状态,它实际上不“处理”任何状态,它只是处理 Crawlera 和 Scrapy 之间的通信。

现在, about Crawlera,他们429默认处理状态,这意味着当他们获得429响应状态时,他们会将其标记为禁止并重试相同的请求。

如果 Crawlera 在多次重试后没有成功,它将503向客户端返回一个状态(本例中为 Scrapy)。

于 2018-12-24T16:55:46.903 回答
0

您可以使用以下方法扩展重试代码列表:

from scrapy.settings.default_settings import RETRY_HTTP_CODES

(在这里查看文档:https ://doc.scrapy.org/en/latest/topics/downloader-middleware.html#std:setting-RETRY_HTTP_CODES )

然后在你的蜘蛛中:

custom_settings = {
    'RETRY_HTTP_CODES': RETRY_HTTP_CODES + [429],
}
于 2018-12-24T07:17:51.993 回答