exceeded retry limit, last status: 429 Too Many Requests
错误信息
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));
}
}