scrapy-crawlera 是否处理 429 状态码?

Does scrapy-crawlera handle a 429 status code?

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

我似乎无法在任何地方找到它的记录

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

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],
}

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

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

如果 Crawlera 在多次重试后没有成功,它将 return 一个 503 状态给客户端(在这种情况下为 Scrapy)。