AI 爬虫遇到 429 怎样停止密集重试?解析 Retry-After,并设置等待上限

AI 爬虫遇到429后,不应立即换身份密集重试。先看Retry-After给出的等待提示,超过任务可接受范围就暂停,并保留失败原因。

AI 爬虫遇到429后,不应立即换身份密集重试。先看Retry-After给出的等待提示,超过任务可接受范围就暂停,并保留失败原因。

让AI编写网页请求重试逻辑的读者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

AI 爬虫遇到 429 怎样停止密集重试?解析 Retry-After,并设置等待上限

核对限流等待时间前,先定规则

Retry-After可以是秒数或HTTP日期。日期要和明确的UTC当前时间比较,不能当本地时区文字。

示例只解析等待策略,不真的sleep或请求网页。max_wait是演示任务规定,不是服务器配额。

服务器要求等待600秒而任务上限60秒时,返回pause,不把等待截成60后提前重试。

给 AI 的输入要包含什么

把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。

解析Retry-After,支持非负秒数和HTTP日期。固定now为2026-01-01 UTC,最大可接受60秒,超过返回pause。缺失或无效返回unknown。不要忽略服务端更长等待。

要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。

保存并运行最小验证程序

下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。

新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。

from datetime import datetime,timezone
from email.utils import parsedate_to_datetime
now=datetime(2026,1,1,tzinfo=timezone.utc)
def policy(value,max_wait=60):
    if value is None: return ('unknown',None)
    try:
        if value.isdigit(): seconds=int(value)
        else:
            date=parsedate_to_datetime(value)
            if date.tzinfo is None: raise ValueError('日期需要时区')
            seconds=max(0,int((date-now).total_seconds()))
    except (ValueError,TypeError,OverflowError): return ('unknown',None)
    return ('pause' if seconds>max_wait else 'wait',seconds)
assert policy('15')==('wait',15)
assert policy('Thu, 01 Jan 2026 00:00:30 GMT')==('wait',30)
assert policy('600')==('pause',600)
for value in ['15','Thu, 01 Jan 2026 00:00:30 GMT','600','invalid']: print(value,policy(value))

怎样判断结果符合要求

15秒为wait,日期为30秒,600秒为pause,非法值为unknown。输出是策略判定,没有真实网络等待或抓取次数。

下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。

15 ('wait', 15)
Thu, 01 Jan 2026 00:00:30 GMT ('wait', 30)
600 ('pause', 600)
invalid ('unknown', None)

处理规则应同时考虑429/503、幂等和累计重试预算,不能见任何Retry-After都无限重试。

HTTP日期已过期时本例取0,实际系统还需防循环重试。

哪些失败必须停下来处理

服务器未提供合法提示时,采用受控退避或人工暂停,不能猜无限额度。

请求含写操作时超时和重试可能重复执行,网页只读采集也需遵守访问范围。

接入自己的任务前再核对一次

保存状态码、响应头与任务ID,并把pause明确交给调度器。

让AI建议重试策略时给出总尝试数与总等待上限,验证失败分支不会继续发送。

资料与适用范围

HTTP Retry-After可表示延迟秒数或HTTP日期,实际重试仍需结合状态与上限。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。

相关基础可阅读 OpenAI API 集成怎么验收?认证、超时、重试与日志检查清单。本文的重点是核对限流等待时间,可以把两项检查作为不同步骤保留。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33439.html

赞 (0)
AI小管家的头像AI小管家
AI 网页数据汇总怎样防止单位丢失?解析固定表格,再核对数值与单位
上一篇 3小时前
智能体知识库维护先查什么?对照文档目录,找出孤立切片与缺失版本
下一篇 3小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部