跑任务写脚本时最烦的就是刷出来一屏 429 Too Many Requests。它一般不是 Bug,是你的请求量触达了服务商限流

报错现象

短时间内批量调用,接口连续返回:

429 Too Many Requests

原因分析

同一个 API 密钥在短时间内请求量过大,触达服务商的 RPM(每分钟请求数)/ TPM(每分钟 token 数) 限流规则。常见诱因:

  • 脚本里的循环没加间隔,瞬间打满配额
  • 多个脚本共用一个密钥
  • 重试逻辑写成死循环,失败后立刻重发

解决步骤(按顺序做)

  1. 暂停调用等待冷却:先停脚本,等 30-60 秒让计数窗口刷新。这一步能解决一大半问题。
  2. 更换备用密钥:如果有多个密钥,换一个没到限流的继续跑。
  3. 降低并发请求速度:在循环里加延时,或用队列串行化:
import time, random

for item in tasks:
    call_api(item)
    time.sleep(random.uniform(0.5, 1.5))  # 每次请求间隔,避免瞬间打满
  1. 切换本地离线模型:如果只是内部测试/重复任务,直接改用 Ollama 本地模型,彻底绕开云端限流。

效果验证

  • 429 消失,任务稳定跑完
  • 服务商后台的用量统计不再触顶

排错速查表

场景优先级
临时小批量触发等冷却即可
长期跑批任务降并发 + 加间隔
并发要求高换备用密钥分流
非必须云端切本地 Ollama

核心经验:429 的正确姿势是「先停再想」。盲目加并发重试只会让限流时间更长,必要时直接本地化绕开。