应该重试,但必须依据retry-after头或指数退避+随机抖动;若响应头含时间戳则解析后计算差值,缺失时启用退避,且需前置鉴权校验与负载感知探测。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

DeepSeek API 返回 429 时该不该重试?
应该重试,但必须带条件——429 是服务端明确告诉你“现在太忙”,不是错误,而是节流信号。盲目重试(比如固定 1 秒后重发)反而会加剧拥塞,触发更长时间的限流。关键判断依据是响应头:Retry-After 字段存在且为数字时,应严格遵守;若缺失,则必须启用指数退避 + 随机抖动。
如何正确解析和响应 Retry-After 头?
DeepSeek 的 429 响应通常携带 Retry-After: 5(单位秒)或 Retry-After: "2026-05-14T18:02:30Z"(RFC 7231 格式时间戳)。不解析直接 sleep 会导致两种问题:时间戳格式被当整数解析报错;服务端动态调整延迟时你却用固定值硬等。
- 优先检查
response.headers.get("Retry-After") - 若值为纯数字(如
"3"),直接time.sleep(float(value)) - 若含冒号或 T 字符(如
"2026-05-14T18:02:30Z"),用datetime.fromisoformat()解析并计算差值 - 若两者都缺失,退回到指数退避逻辑,不 fallback 到固定值
Python 中实现带负载感知的重试函数
单纯指数退避已不够——DeepSeek v4-pro 集群在 CPU > 85% 或 GPU 显存占用 > 90% 时,会主动延长 Retry-After。客户端若无视实时负载,重试间隔可能远低于服务端预期。建议在重试前加一次轻量探测:
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
def probe_load(api_url):
try:
# HEAD 请求只取响应头,不触发推理
r = requests.head(f"{api_url}/health", timeout=2)
return float(r.headers.get("X-Load-Factor", "1.0"))
except:
return 1.5 # 探测失败,默认按高负载处理
<p>def call_with_adaptive_retry(url, payload, max_retries=3):
for i in range(max_retries):
try:
r = requests.post(url, json=payload, timeout=30)
if r.status_code == 200:
return r.json()
elif r.status_code == 429:
load_factor = probe_load(url)
base_delay = float(r.headers.get("Retry-After", 1))
jitter = random.uniform(0, 0.3 <em> base_delay)
delay = min(base_delay </em> load_factor + jitter, 60)
time.sleep(delay)
else:
r.raise_for_status()
except requests.exceptions.Timeout:
time.sleep(2 ** i + random.uniform(0, 0.5))
raise Exception("Max retries exceeded")
</p>
Rate Limit 被误判为 401 或 403 怎么办?
常见但容易被忽略:当 Authorization header 缺失、格式错误(如漏了 Bearer 前缀),或 token 过期时,部分 DeepSeek 网关会统一返回 429 而非标准的 401,目的是防止暴力探测鉴权接口。这意味着你可能在重试一个根本不会成功的请求。
- 首次收到
429时,先检查response.headers.get("WWW-Authenticate")是否存在 - 打印完整
response.text,确认是否含"invalid token"、"missing auth"等关键词 - 若发现鉴权问题,立即停止重试,抛出明确异常而非继续指数等待
- 生产环境务必在重试前校验 token 有效期(JWT 可用
jwt.decode(..., options={"verify_signature": False})快速读取exp字段)
真实场景里,最常被跳过的其实是鉴权校验这一步——重试逻辑写得再精巧,也救不回一个过期的 token。









