Google Ads API报错不再慌:google-ads-python错误处理与重试策略完全手册

Google Ads API报错不再慌:google-ads-python错误处理与重试策略完全手册 Google Ads API报错不再慌google-ads-python错误处理与重试策略完全手册【免费下载链接】google-ads-pythonGoogle Ads API Client Library for Python项目地址: https://gitcode.com/gh_mirrors/go/google-ads-pythongoogle-ads-python是 Google Ads API 的官方 Python 客户端库pip install google-ads即可安装帮你用 Python 管理广告系列、关键词、人群和转化数据。但真正调用 API 时Google Ads API 报错往往是新手最头疼的环节配额超限、查询语法错误、策略违规、部分操作失败……别急。这份错误处理与重试策略完全手册将带你掌握GoogleAdsException的解剖结构、限流退避重试的标准写法、partial_failure处理技巧以及超时调优参数让报错从崩溃现场变成可处理的事件。一、常见报错类型速览先判断敌人是谁 Google Ads API 的错误在库中被系统化地分类。以下是最常遇到的几类报错类型典型场景能否重试处理思路配额错误QuotaError请求过频、并发过高✅ 部分可重试指数退避重试查询错误QueryErrorAWQL 查询语法写错❌ 不可重试修正查询语句请求错误RequestError参数缺失、RPC 超时✅ 可重试检查参数 重试部分失败PartialFailureError批量操作中个别元素失败❌ 无需整体重试按索引定位失败项策略违规PolicyViolationError关键词/素材违反政策❌ 不可重试申请豁免或修改内容授权错误AuthorizationError账号无权限、Token 失效❌ 不可重试检查开发者令牌与权限核心原则先读错误码再决定重试还是修复。盲目重试只会让配额消耗得更快。二、解剖 GoogleAdsException读懂报错的三件套所有 Google Ads API 的错误都收敛为一个异常类GoogleAdsException定义在 errors.py。它携带四个关键属性是排错的第一手情报属性作用排错用法ex.request_id请求唯一 ID提交工单/联系支持的必备凭证ex.error.code()gRPC 状态码如INVALID_ARGUMENT判断错误大类ex.failure.errors结构化错误列表逐条查看具体原因ex.callgRPC 调用详情深度调试时定位调用链其中ex.failure.errors是最有价值的部分。每个错误对象GoogleAdsError包含见 errors.pyerror_code精确错误码如quota_error.RESOURCE_EXHAUSTEDmessage人类可读的错误描述trigger触发错误的具体值location错误发生在请求的哪个字段经验法则拿到异常先打印request_id和每条错误的messagelocation90% 的问题在这一步就定位了。三、可直接抄的异常处理模板项目内置了标准示例 handle_partial_failure.py其try/except骨架是官方推荐写法核心逻辑如下try: response ad_group_service.mutate_ad_groups(request) except GoogleAdsException as ex: print(f请求 ID {ex.request_id} 失败状态 {ex.error.code().name}) for error in ex.failure.errors: print(f\t错误信息: {error.message}) if error.location: for field_path_element in error.location.field_path_elements: print(f\t\t字段: {field_path_element.field_name})✅ 这个模板的三个要点捕获GoogleAdsException而不是笼统的Exception遍历ex.failure.errors逐条输出因为一次请求可能包含多个错误打印request_id方便事后排查四、限流报错Rate Exceeded指数退避重试标准姿势 当请求过于频繁API 会返回配额错误。QuotaErrorEnum中几个关键枚举值定义在 quota_error.py枚举值含义建议动作RESOURCE_EXHAUSTED请求量过多✅ 等待后重试RESOURCE_TEMPORARILY_EXHAUSTED短时间内请求过多✅ 等待后重试ACCESS_PROHIBITED访问被禁止配额权限不足❌ 重试无效需申请升级EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION短时间内执行了太多昂贵查询优化查询 降频官方示例 handle_rate_exceeded_error.py 演示了**指数退避Exponential Backoff**重试策略——这是应对限流的最佳实践while retry_count NUM_RETRIES: # 最多重试 3 次 try: make_request() break except GoogleAdsException as ex: if is_quota_exhausted(ex): sleep(retry_seconds) # 先等待 retry_seconds * 2 # 再翻倍10s → 20s → 40s retry_count 1 else: raise ex # 非限流错误直接抛出退避时间演进一目了然重试轮次等待时间第 1 次重试10 秒第 2 次重试20 秒第 3 次重试40 秒⚠️两个细节只重试限流类错误非配额错误如参数错误必须raise向上抛出否则会把真正的 Bug 吞掉达到重试上限要显式失败示例在finally中检查重试次数耗尽后抛出明确异常避免假成功五、部分失败Partial Failure批量操作别一错全错批量创建 100 个关键词如果第 13 个重名导致整个请求失败就太可惜了。解决方式是开启partial_failure模式见 handle_partial_failure.pyrequest.partial_failure True开启后✅合法操作正常执行非法操作单独报错响应对象中带有partial_failure_error字段每条错误都标注了operation_index失败的是第几个操作你只需根据索引定位并重试失败项而不是重发整个批次适用场景批量建计划、批量加关键词、批量改出价等大部队操作强烈推荐开启。六、超时与重试调优Retry 参数详解 ⏱️对于大数据量查询默认超时可能不够。项目示例 set_custom_client_timeouts.py 展示了如何在任意请求上挂retry参数results ga_service.search( requestsearch_request, retryRetry( deadline_CLIENT_TIMEOUT_SECONDS, # 累积总超时含所有重试 initial_CLIENT_TIMEOUT_SECONDS / 10, # 首次尝试的超时 maximum_CLIENT_TIMEOUT_SECONDS / 5, # 单次尝试的最大超时 ), )三个参数的通俗理解参数一句话解释deadline整个操作最多给我这么久含所有重试尝试initial第一次尝试最多等多久maximum任何单次尝试的最长等待上限超时未完成的调用会抛出DeadlineExceeded异常可以单独捕获并降级处理例如缩小查询范围。七、错误码大全170 种错误的家谱 库为每个 API 版本提供了完整的错误类型目录以 v25 为例errors/types/ 目录下有170 多个错误类型文件每个错误类别一个文件例如文件覆盖场景quota_error.py配额与限流policy_violation_error.py内容策略违规partial_failure_error.py批量操作部分失败query_error.pyAWQL 查询错误authorization_error.py权限与授权request_error.py请求级错误含 RPC 超时遇到不认识的错误码时直接按名字来这里找对应文件文档字符串里就有该错误所有枚举值的解释。另外关键词触发策略违规时还可以参考 handle_keyword_policy_violations.py 学习如何自动申请政策豁免而不是简单地换词。八、新手 FAQ 与避坑清单 Q1报错后我该重试几次官方示例建议3 次 指数退避10s → 20s → 40s。对RESOURCE_EXHAUSTED类错误足够再多次收益递减。Q2怎么把错误日志留得漂亮三件套缺一不可request_iderror.code 每条错误的message与location字段。有了request_id提交支持工单时 Google 才能精确定位你的请求。Q3ACCESS_PROHIBITED可以重试吗❌ 不行。它表示配额权限被禁止重试一万次也一样需要联系客户经理申请配额升级。Q4查询很慢是被限流了吗未必。先区分收到GoogleAdsException且错误码是配额类才是限流如果卡在读取结果流考虑用Retry调大deadline见第六节。Q5哪些错误绝不能重试参数错误、查询语法错误、策略违规、授权错误——这些确定性错误重试只是浪费配额直接修 Bug。写在最后掌握错误处理的关键只有三句话读request_id和failure.errors→ 限流类错误用指数退避重试 → 批量操作用partial_failure兜底。配合 error_handling 示例目录 中的四个官方示例你的 Google Ads API 应用将从一报错就崩进化为稳如老狗。【免费下载链接】google-ads-pythonGoogle Ads API Client Library for Python项目地址: https://gitcode.com/gh_mirrors/go/google-ads-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考