Skip to content

为 API 错误设计重试与退避

目标

实现不会无限重试、也不会掩盖鉴权错误的请求策略。

前置条件

能够记录 HTTP 状态、响应错误码、请求 ID 和尝试次数。

步骤

  1. 将 400、401、403 和 model_not_found 视为需要修正输入或配置的终止错误。
  2. 只对 429、超时和明确的临时服务错误重试。
  3. 使用带随机抖动的指数退避,例如 1、2、4 秒,并设置最多三次。
  4. 如果响应提供 Retry-After,优先遵守该值。
  5. 每次失败记录请求 ID、状态、错误码和延迟,但不要记录令牌或敏感正文。
  6. 用模拟的 401、429 和连续超时验证分支。

预期结果

终止错误立即返回,可重试错误在上限内恢复,超过上限后给出可诊断记录。

排错

  • 请求同时重试造成峰值:加入随机抖动。
  • 任务重复执行:对有副作用的操作使用幂等键或禁止自动重试。
  • 日志泄密:集中遮盖授权头和敏感字段。

基于 OpenAI 兼容协议 · 多模态算力网关