exceeded retry limit, last status: 429 Too Many Requests

2026年09月16日 10:41 10.30 秒 success

错误信息

exceeded retry limit, last status: 429 Too Many Requests

AI 解决方案

原文:exceeded retry limit, last status: 429 Too Many Requests
译文:超过了重试限制,最后状态:429 请求过多

🎯 原因分析


服务端返回HTTP 429状态码表示请求频率超限,客户端在达到预设重试次数后仍然无法成功请求,说明API接口的调用频率超出了服务端的速率限制(Rate Limit)。错误发生在网络请求的重试过程中。

💡 解决方案

// 方案1:增加重试间隔,指数退避算法
async function requestWithRetry(url, maxRetries = 5) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url);
    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After');
      const waitTime = retryAfter ? Number(retryAfter) * 1000 : Math.pow(2, i) * 1000;
      await new Promise(resolve => setTimeout(resolve, waitTime));
      continue;
    }
    return response;
  }
  throw new Error('超过最大重试次数');
}

// 方案2:降低请求频率,加入延迟
async function batchRequest(items, delay = 1000) {
  for (const item of items) {
    await request(item);
    await new Promise(resolve => setTimeout(resolve, delay));
  }
}

🛡️ 预防措施


  • 配置速率限制:客户端应设置合理的请求间隔,避免短时间内高频调用

  • 监听Retry-After头:服务端通常会在429响应中告知可重试的时间,优先使用该值

  • 使用请求队列控制并发数,避免瞬间打满接口限额