
429 报错是什么?3 分钟搞懂速率限制与退避重试
钱够、网络也通,调用模型却突然返回 429。这不是你被拉黑,而是服务器在说:这个时间窗口内你的请求太多了,请排队。一句话定义:429 是 HTTP 协议的标准状态码「Too Many Requests」,表示在给定时间内请求方发送了过多请求,触发了服务端的速率限制(rate limiting)。
429 是什么:写在协议标准里的状态码
429 不是某家 AI 公司的私有报错,而是国际互联网标准组织 IETF 在 RFC 6585(2012 年发布)里定义的 HTTP 状态码。标准原文写明:429 表示用户在给定时间内发送了过多请求,也就是速率限制;响应中可以附带一个 Retry-After 头,提示等多久再发新请求。MDN 的中文文档对这条定义有同样表述。
把标准语言翻译成人话:服务器不拒绝你的钱,只限制你的速度。这是所有 API 服务(不只 AI)的通用自保机制。

为什么明明有钱也调用不了
很多人第一次遇到 429 都以为是余额问题,其实限流和计费是两套独立系统。常见触发原因有三类:
- 超过了速率档位:API 服务普遍按「每分钟请求数」「每分钟 Token 数」两个维度设限,你的免费或低档套餐限额更低,高并发一冲就撞线。
- 并发太密:哪怕总量不大,同一秒内挤进来的请求太多,窗口计数也会瞬间爆表。循环里不加间隔地猛发请求是最典型的踩坑。
- 共享额度被别人占掉:部分平台和聚合渠道多个用户共享一段配额,别人高峰期抢占了窗口,你跟着一起收到 429,这也是中转渠道「高峰期特别不稳」的原因之一。

顺带一提,限流窗口的单位时间通常以分钟计,等几十秒再试常常就恢复了。改用更省的调用方式能从源头减少触发,可以参考这篇省 Token 的实测技巧。写自动化程序时,调用接口的方式选择也有讲究,可参考这篇 Agents API 与 Agents SDK 的区别。

退避重试怎么理解
退避重试(backoff)的意思是:失败了别立刻重发,等一会儿再试,而且每失败一次就等得更久一些。
最常用的是指数退避:第一次失败等 1 秒,第二次等 2 秒,第三次等 4 秒,逐次翻倍,中间可以加少量随机抖动,避免所有请求同一时刻一起重试把服务器再次冲垮。这很像排队叫号:号没到就反复去窗口问,只会让队伍更堵。
有两个实操要点比任何教程都重要:
- 先读 Retry-After:如果响应里带了这个头,说明服务端明确告诉你等多少秒,照做是效率最高的选择。
- 别在循环里裸重试:写死「失败立即重试三次」的代码,等于把限流变成长期限流。正确姿势是每次重试前按退避策略拉长等待。
怎么预防 429
与其等报错再处理,不如从三个方向减少触发:
- 控制并发:给调用加节流,同一时间只跑有限的几个请求,跑完一个再发下一个。
- 错峰和缓存:批量任务避开高峰时段;相同请求的结果做缓存,相同的问题不必反复烧调用次数。
- 用对档位:免费额度适合学习和测试,量上来后按需升级付费档位,速率限制会随之放宽;想先零成本练手,可以从这篇硅基流动免费额度解析入手。
一段话讲清 429
可以照这个口径复述:429 是 HTTP 标准里表示速率限制的状态码,含义是请求方在单位时间内发起了过多请求。服务端出于保护自身资源和公平分配的目的对调用限速,限流和计费是两套独立机制,所以余额充足也可能被限。工程上的标准处理是指数退避重试,若响应带 Retry-After 头则按提示等待;预防上靠控制并发、缓存结果和匹配合适的套餐档位。
如果被追问「为什么不全放开不限速」,可以补一句:无限速意味着少数高频调用者会挤占所有用户的容量,限流本质上是保证大多数人稳定的公平机制。
常见问题
429 和 403、500 报错有什么区别?
答:429 是请求太频繁,等一等就能恢复;403 是权限不足,等也没用;500 是服务端自身故障,取决于服务商修复。三者的处理动作完全不同。
遇到 429 会被扣费吗?
答:一般不会。被限流拒绝的请求没有进入模型计算,主流平台不对这类请求计费,但具体以各平台的计费说明为准。
Retry-After 字段在哪看?
答:它在 HTTP 响应头里,不在报错正文里。用代码要读响应的 headers,浏览器调试工具则可以在网络面板的响应头中找到。
网页版 AI 也会遇到 429 吗?
答:会,只是界面通常翻译成「请求过于频繁,请稍后再试」。原理相同,都是限流窗口计数超了。
升级付费档位后还容易 429 吗?
答:限额会明显放宽,但不等于取消。极端并发下仍可能触发,节流和退避重试这两件事在任何档位都该做。

京ICP备2024094994号-29