SDK 只对带幂等键或天然幂等的请求重试。默认最多重试 2 次即一共 3 次尝试,第 n 次重试前等待 min(4000, 200 × 2^(n-1)) 毫秒,再乘以 0.7 到 1.3 之间的随机系数。响应带 Retry-After 时等待时间取两者较大值,上限 30 秒。一次逻辑调用的总时长上限默认 300 秒,重试与等待都计入,到时即以最后一次的错误结束。
可重试的情形:连接失败,连接被重置,连接或读取超时,HTTP 408,425,429,500,502,503,504,以及错误码表里标为可重试的错误码,例如 40901,42900,42901,50000,50200,3001 到 3003。参数错误,鉴权失败,权限不足,额度不足与其余 4xx 不重试。每次重试都通过指标回调与日志告知调用方。
退避参数#
| 字段 | 默认值 | 含义 |
|---|---|---|
maxRetries |
2 | 首次之外最多重试 2 次 |
initialDelayMs |
200 | 第一次退避 |
multiplier |
2 | 退避倍数 |
maxDelayMs |
4000 | 退避上限 |
jitter |
0.3 | 随机系数 0.7 到 1.3 |
maxRetryAfterMs |
30000 | Retry-After 的上限 |
totalTimeoutMs |
300000 | 一次逻辑调用的总时长上限 |
各端的配置写法见重试与幂等。