首页/AI/AI 应用速查/重试与指数退避(Exponential Backoff)
本包目录(159 条)

重试与指数退避(Exponential Backoff)

对可恢复错误重试要带指数退避加抖动:等待约 1s、2s、4s 递增并叠加随机抖动,设最大次数;4xx 中的参数类错误重试没有意义。

AI 应用速查AI更新于 2026-10-12

错误分类与重试策略

错误类型是否重试策略
400 / 401 / 403 / 404不重试先修正请求或权限
408 / 409 / 429重试退避 + 抖动 + retry-after
500 / 502 / 503 / 504重试指数退避,限制最大次数
连接超时 / 网络错误重试同上,并检查幂等性

指数退避 + 抖动(Python 示例)

指数退避 + 抖动(Python 示例)
import random, time
def backoff_seconds(attempt):
    return min(30, 2 ** attempt) * (0.5 + random.random())
for attempt in range(6):
    try:
        do_request()
        break
    except RetryableError:
        time.sleep(backoff_seconds(attempt))
重试请求应携带幂等键或业务唯一 ID,避免重复扣费与重复写库(尤其网关自动重发场景)。

易错点

  • 无上限重试把配额打爆、账单飙升
  • on 参数类错误(400)反复重试,纯浪费

数据来源与参考

  • AWS 架构博客 Exponential Backoff And Jitter;Google SRE Book

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌