想知道是否有人在使用scrapy时是否知道scrapy-crawlera中间件是否处理429状态代码,还是我需要实现自己的重试逻辑?
我似乎找不到任何地方记录的文件
答案 0 :(得分:1)
要回答您的问题:否,scrapy-crawlera中间件不处理429
状态,它实际上不“处理”任何状态,它只处理通信在Crawlera和Scrapy之间。
现在,大约Crawlera
,他们会默认处理状态429
,这意味着当他们获得429
响应状态时,会将其标记为禁止并重试相同的请求
如果Crawlera在重试几次后仍未成功,它将向客户端返回503
状态(在这种情况下为Scrapy)。
答案 1 :(得分:0)
您可以使用以下方法扩展重试代码列表:
from scrapy.settings.default_settings import RETRY_HTTP_CODES
(在此处查看文档:{{3}})
然后在您的蜘蛛中
custom_settings = {
'RETRY_HTTP_CODES': RETRY_HTTP_CODES + [429],
}