| 触发 | 429 限流 / 5xx / 超时 / 连接重置 |
|---|---|
| 退避 | 指数退避 + 随机抖动,避免集群同步重试 |
| 上限 | 限定次数与总时长,超了快速失败 |
| 幂等 | 请求带幂等键,防同一任务重复扣费 |
指数退避(Python)
指数退避(Python)
import random, time
def backoff(attempt, base=0.5, cap=8.0):
delay = min(cap, base * (2 ** attempt))
return delay * (0.5 + random.random()) # 抖动
for attempt in range(4):
try:
resp = call_api()
break
except RetryableError:
if attempt == 3:
raise
time.sleep(backoff(attempt))无退避的重试风暴会把限流升级成封禁;重试率持续升高要查上游真实故障,而不是继续加次数。