You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Books API返回429 Too Many Requests错误如何解决?

错误原因

429 Too Many Requests 本质是触发了Google Books API的速率限制,即使你未达到公开标注的单日2万次、单用户每分钟100次的配额阈值,也可能触发该报错:

  • 你的现有代码没有设置请求间隔,连续高频发送请求,很容易在短时间内触碰到每分钟100次的限流阈值
  • Google除了公开配额外,还存在动态限流规则,短时间请求过于集中会触发临时拦截
  • 如果作者姓名包含特殊字符未做URL转码,会产生大量无效请求,累计后也可能触发限流
解决方案

你可以从以下几个维度调整代码:

  • 添加固定请求间隔:两次请求之间增加0.6-0.7秒的延迟,确保每分钟请求数控制在90次以内,留有冗余空间,可通过time.sleep(0.7)实现
  • 增加429错误退避重试逻辑:不要碰到异常就直接退出,针对429错误做指数退避重试,首次重试等待1秒,第二次2秒,第三次4秒,最多重试3次,避免临时限流导致任务中断
  • 参数URL编码:构造请求前对author参数做URL编码,避免特殊字符产生无效请求,可通过urllib.parse.quote(author)处理
  • 主动限流控制:代码中统计每分钟的请求次数,达到80次就主动暂停到下一分钟再继续发送请求,避免触发官方拦截

修改后的参考代码如下:

import time
import sys
import requests
from urllib.parse import quote

key = "**********************************"
# 每分钟请求计数
request_count = 0
start_time = time.time()

for author in author_list: # 此处替换为你的作者名单迭代逻辑
    # 主动限流控制
    request_count += 1
    if time.time() - start_time >= 60:
        request_count = 1
        start_time = time.time()
    if request_count > 80:
        wait_time = 60 - (time.time() - start_time)
        time.sleep(wait_time)
        request_count = 1
        start_time = time.time()
    
    # 构造请求
    encoded_author = quote(author)
    api = f'https://www.googleapis.com/books/v1/volumes?q={encoded_author}&key={key}'
    
    # 退避重试
    retries = 0
    max_retries = 3
    while retries < max_retries:
        try:
            response = requests.get(api)
            response.raise_for_status()
            print(response.json())
            break
        except requests.exceptions.HTTPError as e:
            if response.status_code == 429 and retries < max_retries -1:
                wait = 2 ** retries
                time.sleep(wait)
                retries +=1
                continue
            raise sys.exit(e)
        except requests.RequestException as e:
            raise sys.exit(e)
    
    # 固定请求间隔
    time.sleep(0.7)

内容的提问来源于stack exchange,提问作者geekPinkFlower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:54:01