status_code=429, You have exceeded your current request limit. For details, see:...
错误信息
status_code=429, You have exceeded your current request limit. For details, see: https://***.com/***/***/***
AI 解决方案
🔍 报错分析
1. 🌐 错误翻译
原文:status_code=429, You have exceeded your current request limit. For details, see: https://***.com/***/***/***
译文:状态码=429,您已超出当前请求限制。详情请查看:https://***.com/***/***/***
2. 🎯 原因分析
该错误属于API请求频率超限错误(HTTP 429 Too Many Requests),根本原因是在短时间内向目标API发送的请求数量超过了该API服务设定的速率限制,触发了服务端的限流机制,导致请求被拒绝。
3. 💡 解决方案
import time
import requests
from tenacity import retry, stop_after_attempt, wait_exponential
# 使用tenacity库实现自动重试,指数退避策略
@retry(stop=stop_after_attempt(5), wait=wait_exponential(multiplier=1, min=2, max=10))
def make_api_request(url, headers=None):
response = requests.get(url, headers=headers)
# 若返回429,主动等待后触发重试
if response.status_code == 429:
retry_after = int(response.headers.get('Retry-After', 5))
time.sleep(retry_after)
raise Exception("触发重试机制")
response.raise_for_status()
return response.json()
# 调用示例
# result = make_api_request("https://api.example.com/data")
若未使用第三方库,可手动添加基础重试逻辑:
import time
import requests
def make_api_request(url, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code == 429:
retry_after = int(response.headers.get('Retry-After', 5))
print(f"请求超限,{retry_after}秒后第{attempt+1}次重试...")
time.sleep(retry_after)
continue
response.raise_for_status()
return response.json()
raise Exception("多次重试后仍请求超限,请降低请求频率")
4. 🛡️ 预防措施
time.sleep()控制请求频率,避免突发高并发Retry-After头信息,需优先遵循该数值进行等待