Gemini API 429:速率限制与重试策略
并发调用瞬间报 429 Too Many Requests 怎么处理?掌握 RPM/TPM 限制计算,并在代码中编写标准指数退避重试算法。
一、429 报错的触发机理
HTTP 429 告知客户端请求已经突破了当前的调用配额阈值:
1. RPM(Requests Per Minute):每分钟发起的请求总次数超限;
2. TPM(Tokens Per Minute):每分钟处理的输入输出 Token 总量超限;
3. RPD(Requests Per Day):单日累计请求总上限已达到。
二、生产级指数退避重试(Exponential Backoff)实现
在代码中盲目循环重试只会延长被系统拒付的时间,必须加入动态等待与抖动:
import time
import random
def safe_generate(model, prompt, retries=4):
for i in range(retries):
try:
return model.generate_content(prompt)
except Exception as e:
if "429" in str(e) and i < retries - 1:
# 指数等待:2^i 秒,加上随机抖动防止并发碰撞
sleep_time = (pow(2, i)) + random.uniform(0.1, 1.0)
time.sleep(sleep_time)
else:
raise e
三、根治建议
如果业务体量持续攀升,建议在 Google Cloud 控制台绑定结算账户将免费层升级为 Pay-as-you-go 付费方案,RPM 配额将获得大幅提升。
前置基础见:[Gemini 快速调用指南](https://aihuiyuan.club/articles/gemini-api-python-first-call-quickstart)。