Request rejected (429) · Service Unavailable

2026年04月20日 14:53 processing

错误信息

API Error: Request rejected (429) · Service Unavailable

AI 解决方案

报错分析报告

1.错误翻译


原文:Request rejected (429) · Service Unavailable
译文:请求被拒绝(429状态码)· 服务不可用

2. 原因分析


  • 根本原因:客户端请求频率超过服务端速率限制(429),或服务端临时无法承载请求(Service Unavailable)。

  • 发生位置:API请求调用的代码处,上下文为短时间内高频请求或服务端负载过高。
  • 3. 解决方案


    import requests
    import time
    
    def call_api_with_backoff(url, max_retries=3, initial_delay=2):
        delay = initial_delay
        for attempt in range(max_retries):
            try:
                response = requests.get(url)
                if response.status_code == 200:
                    return response.json()
                elif response.status_code == 429:
                    print(f"⚠️ 速率限制触发(第{attempt+1}次),等待{delay}秒后重试...")
                    time.sleep(delay)
                    delay *= 2  # 指数退避
                else:
                    response.raise_for_status()
            except requests.exceptions.RequestException as e:
                print(f"❌ 请求失败: {e}")
                if attempt < max_retries - 1:
                    time.sleep(delay)
                    delay *= 2
        raise Exception("达到最大重试次数,API调用失败")
    
    # 使用示例
    try:
        data = call_api_with_backoff("https://api.example.com/endpoint")
    except Exception as e:
        print(e)
    

    4. 预防措施


  • 最佳实践1:客户端实现速率限制(如令牌桶算法),控制单位时间请求数(例:每分钟≤60次)。

  • 最佳实践2:添加指数退避重试(失败后等待时间翻倍),避免雪崩式请求。

  • 推荐工具tenacity(Python重试库)、Redis(分布式限流)、Postman(测试API阈值)。