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

Python循环调用Google API报429错误如何减速不中断程序运行

规避Google API 429报错的实现方案

核心优化点

  • 主动控速:每次正常请求完成后添加1秒固定等待,从源头降低请求频率,减少触发速率限制的概率
  • 指数退避重试:替换原固定1秒延迟逻辑,429报错后重试等待时间逐次翻倍,最大等待60秒,兼顾重试效率和配额恢复需求
  • 修复原有代码逻辑漏洞:原代码异常分支未正确获取响应状态码,修正后直接从请求异常对象中提取状态码判断
  • 配额消耗监控:新增请求计数逻辑,累计请求量接近2万配额上限时主动终止,避免配额耗尽

优化后完整代码

import time
import requests

def connGoogleAPI(booksData):
    key = "**************************"
    books_list = []
    col = ['Title', 'Authors', 'published Date', 'Description','ISBN']
    books_list.append(col)
    # 配额上限预留10%缓冲,避免超量
    QUOTA_LIMIT = 18000
    request_count = 0

    with requests.Session() as session:
        for author in booksData:
            params = {"q": author, "key": key, "maxResults": 1}
            # 指数退避初始延迟
            retry_delay = 1
            max_retry_delay = 60
            res = None
            while True:
                # 达到配额上限直接终止
                if request_count >= QUOTA_LIMIT:
                    raise Exception("已接近配额上限,任务终止")
                try:
                    response = session.get("https://www.googleapis.com/books/v1/volumes", params=params)
                    request_count += 1
                    response.raise_for_status()
                    res = response.json()
                    break
                except requests.exceptions.HTTPError as e:
                    if e.response.status_code == 429:
                        if retry_delay > max_retry_delay:
                            raise Exception(f"作者 {author} 重试多次仍触发速率限制,跳过该条") from e
                        time.sleep(retry_delay)
                        retry_delay *= 2
                    else:
                        raise e
                except Exception as e:
                    raise e
            # 正常请求完成后添加固定间隔,主动降速
            time.sleep(1)
            books_list.append(lookup(res, author))
    return books_list

# 函数定义完成后再调用
author_List = ["J. K. Rowling", "mark twain","Emily Dickinson"] 
result = connGoogleAPI(author_List)

内容的提问来源于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 23:24:02