429
错误信息
429
AI 解决方案
🔍 报错分析
1. 🌐 错误翻译
原文:429
译文:请求过多(Too Many Requests)
2. 🎯 原因分析
3. 💡 解决方案
方案1:客户端主动限流与重试(添加延迟重试)
// 使用指数退避策略重试,解决429错误
async function callApiWithRateLimit(apiFunction, maxRetries = 5) {
let retryCount = 0;
while (retryCount <= maxRetries) {
try {
return await apiFunction();
} catch (error) {
// 检测是否为429错误
if (error.response?.status === 429) {
retryCount++;
if (retryCount > maxRetries) {
throw new Error(`请求超过重试上限(${maxRetries}次): ${error.message}`);
}
// 指数退避延迟:首次延迟1秒,后续翻倍
const delayMs = Math.pow(2, retryCount) * 1000;
await new Promise(resolve => setTimeout(resolve, delayMs));
continue;
}
// 非429错误直接抛出
throw error;
}
}
}
// 调用示例
async function fetchData() {
await callApiWithRateLimit(() => fetch('https://api.example.com/data'));
}
方案2:检查请求频率并降低调用速度
4. 🛡️ 预防措施
axios-retry、Python的tenacity)简化重试实现X-RateLimit-Limit(总限额)、X-RateLimit-Remaining(剩余次数)、Retry-After(重试等待时间)),根据响应头动态调整请求频率,实现自适应限流