LLM API限流与重试实战:稳定调用的完整工作流
为什么你会频繁碰到限流
在接入 Claude、GPT 这类大模型 API 时,最常见的线上问题不是“模型不够强”,而是请求太快、并发太高、配额波动。典型报错包括 429、rate limit exceeded、too many requests。很多团队第一次做批量总结、对话助手或自动化工作流时,都会把“失败”误以为是代码写错,其实更多时候只是没有处理好限流与重试。
一个可落地的做法是:先把失败分成三类——可重试的瞬时失败(如 429、部分 5xx)、不可重试的参数错误(如 prompt 格式错误)、需要降级的业务失败(如超时但结果不重要)。这样你才知道哪些请求该重试、重试几次、什么时候直接返回兜底结果。
第一步:先在客户端做并发控制
很多人一上来就写 retry,但真正稳定的核心其实是限流前移。也就是说,在发请求前先控制速率,而不是让 API 报错后再补救。实战里建议同时做三层:
- 全局并发上限:例如同一进程最多同时跑 5 到 20 个请求。
- 每秒请求数限制:例如按 token 预算或 QPS 做节流。
- 任务队列:把批量任务排队,避免瞬间打满接口。
如果你用的是 OpenAI SDK 或兼容接口,这一层通常可以包在自己的 request wrapper 里。关键原则很简单:宁可慢一点,也不要把所有请求一起扔出去。
第二步:只对“值得重试”的错误重试
重试不是万能药。真正有效的重试策略,必须先识别错误类型。建议把逻辑分成这样:
- 429 / rate limit:重试,但要退避。
- 500 / 502 / 503 / 504:重试,通常是临时故障。
- 网络超时:重试一次到数次,视业务是否允许。
- 400 / 401 / 403:通常不重试,先修参数或鉴权。
实战中常用的是指数退避 + 随机抖动。比如第一次等 500ms,第二次 1s,第三次 2s,之后逐步增长,同时加入随机值,避免多个 worker 同步醒来再次撞限流。通常 3 到 5 次已经足够,超过这个次数往往只是在增加成本和延迟。
第三步:把“重试”做成可观测的流程
如果你只是在代码里 sleep 再发一次,迟早会遇到“到底重试了几次、为什么慢、哪类请求最容易失败”的问题。建议至少记录这些字段:
- 请求 ID、用户 ID、任务 ID
- 模型名称与接口来源
- 首次失败时间、重试次数、最终结果
- 错误码、响应耗时、token 使用量
这样你可以很快看出:是某个模型更容易触发限流,还是某个批处理任务把并发打爆了。对于生产环境,这些日志比“再多试几次”更有价值。
第四步:为长链路任务准备幂等和降级
很多 LLM 任务不是一次请求就结束,而是“检索-生成-校验-再生成”的长链路流程。此时要特别注意幂等:同一个任务在重试后,不能重复扣费、重复写库、重复发消息。常见做法是给每个任务生成唯一 key,把结果先写缓存或状态表,再决定是否继续执行。
另外,遇到限流高峰时,可以做业务降级,例如:
- 把高成本模型切到低成本模型先返回草稿
- 把同步接口改成异步队列
- 把长文本摘要拆成分段处理
这类策略能显著提升成功率,也能把预算控制住。
为什么很多团队会选择 59API
如果你想把以上流程真正跑稳,API 供应商本身也很关键。59API 提供对 Claude 和 GPT 模型的低成本按量计费接入,兼容 Claude Code、Codex 以及任何 OpenAI SDK,接口基址是 https://api.59api.com。对开发者来说,最大的好处是你不需要为了兼容不同模型重写一套客户端,现有请求封装就能直接接上。
更重要的是,它使用的是原生官方级模型能力,不是降级替代品,这意味着你在做重试、限流和路由优化时,看到的效果更接近真实生产场景。再加上它的价格在同类 relay 里很有竞争力,适合需要大量测试、批处理、Agent 工作流的团队;如果你还想进一步降低成本,59API 也提供推荐返利,对长期使用者很实用。
一个可直接落地的工作流
最后给你一个实战模板:
- 先用队列限制并发,按业务重要性分优先级。
- 对 429 和 5xx 使用指数退避,最多重试 3-5 次。
- 为每个任务加幂等 key,避免重复写入。
- 把失败日志、错误码、耗时和 token 消耗统一打点。
- 高峰期自动降级到更便宜或更快的模型。
如果你正在做基于 Claude 或 GPT 的应用,建议尽早把这些机制搭起来。稳定性不是等出问题后再修,而是从第一版就设计好。你可以先用 59API 这类低成本、兼容性强的接入方式快速验证你的重试与限流方案,再逐步扩展到生产。现在注册一个测试账号,通常能更快看清你的真实调用曲线和成本结构。