想知道是否有人知道在使用 scrapy 时,scrapy-crawlera 中间件是否处理 429 状态码,或者我是否需要实现自己的重试逻辑?
我似乎在任何地方都找不到它的记录
想知道是否有人知道在使用 scrapy 时,scrapy-crawlera 中间件是否处理 429 状态码,或者我是否需要实现自己的重试逻辑?
我似乎在任何地方都找不到它的记录
回答你的问题:不,scrapy-crawlera中间件不处理429
状态,它实际上不“处理”任何状态,它只是处理 Crawlera 和 Scrapy 之间的通信。
现在, about Crawlera
,他们429
默认处理状态,这意味着当他们获得429
响应状态时,他们会将其标记为禁止并重试相同的请求。
如果 Crawlera 在多次重试后没有成功,它将503
向客户端返回一个状态(本例中为 Scrapy)。
您可以使用以下方法扩展重试代码列表:
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],
}