# 重试 可重试的情形,退避公式与总时限。 来源:https://open.shengzhiai.com/sdk/v2/api/retries/ 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 | 一次逻辑调用的总时长上限 | 各端的配置写法见[重试与幂等](https://open.shengzhiai.com/sdk/v2/guides/retries/#单次调用覆盖)。