配额可保护 Google 的基础架构免受自动化流程以不当方式使用 Google Bid Manager API 的影响。它们可以确保一个开发者的行为不会对更大的社区产生负面影响。
配额限制
所有 Bid Manager API 资源和方法均需遵循下列默认配额限制。
- 每个项目的每日请求数为 2,000 次 - 可增加。
- 每个项目的每秒查询数 (QPS) 为 4 次。
- 在 Google API 控制台中,此配额称为每位用户每分钟的查询数,设为 240。
超出配额限制
在极少数情况下,您的请求会因超出配额限制而失败,此 API 会返回 HTTP 状态代码和错误原因。此外,响应正文还将详细说明出错的原因。如需查看错误响应示例,请参阅错误消息指南。
下表列出了因超出配额限制而导致请求失败时可能出现的错误以及建议采取的措施。
编码 |
原因 |
消息 |
建议采取的措施 |
403 |
dailyLimitExceeded |
已超出每日上限 |
在解决问题之前,请勿重试。通过 Google API 控制台检查您的使用情况,并修改您的工作流程以减少发送的请求数量。如果您认为自己的使用情况在合理范围内,则可以申请更多配额。 |
403 |
userRateLimitExceeded |
已超出用户速率限制 |
使用指数退避算法减缓您发送请求的速率。 |
什么是指数退避算法?
指数退避是网络应用的标准错误处理策略,在此过程中,客户端按照不断增加的时间间隔定期重试失败的请求。如果因大量的请求或网络流量拥堵而导致服务器返回错误,指数退避策略能够很好地处理此类错误。相反,此策略并不适合处理与网络流量或响应时间无关的错误,例如授权凭据无效或找不到文件这样的错误。
如果使用得当,指数退避还能提高带宽使用效率、减少获得成功响应所需的请求数,并最大程度地提高并发环境中的请求吞吐量。
实现简单指数退避的流程如下:
- 向 API 发出请求。
- 收到
HTTP 503
响应,指出您应重试该请求。
- 等待 1 秒 + random_number_milliseconds 毫秒,然后重试该请求。
- 收到
HTTP 503
响应,指出您应重试该请求。
- 等待 2 秒 + random_number_milliseconds 毫秒,然后重试该请求。
- 收到
HTTP 503
响应,指出您应重试该请求。
- 等待 4 秒 + random_number_milliseconds 毫秒,然后重试该请求。
- 收到
HTTP 503
响应(指示您应该重试该请求)。
- 等待 8 秒 + random_number_milliseconds 毫秒,然后重试该请求。
- 收到
HTTP 503
响应(指示您应该重试该请求)。
- 等待 16 秒 + random_number_milliseconds 毫秒,然后重试该请求。
- 停止。报告或记录错误。
在上述流程中,random_number_milliseconds 是一个小于或等于 1000 的随机毫秒数。这是一项很有必要的机制,因为引入一个比较小的随机延迟时间有助于更均匀地分布负载,并降低服务器发生拥堵的可能性。random_number_milliseconds 的值必须在每次等待后重新定义。
注意:等待时间始终是 (2 ^ n) 秒 + random_number_milliseconds 毫秒,其中 n 是单调递增的整数,初始值为 0。整数 n 在每次迭代(每次请求)后递增 1。
该算法设置为 n 等于 5 时终止。设置此上限的目的在于防止客户端无止尽地重试;在请求被视为“不可恢复的错误”之前,它使延迟总时间达到约 32 秒。重试更多次数是可以接受的,特别是在大数量上传正在进行的情况下;只需确保重试延迟时间的上限设置合理即可(比如说少于 1 分钟)。
申请更多每日配额
如果您认为自己的应用需要更多每日配额,可以按照以下说明进行申请。
以下说明仅适用于遇到 dailyLimitExceeded
错误的项目。针对其他配额错误建议采取的操作已在上表中进行了介绍。
- 前往 Google API 控制台中的 Bid Manager API。
- 在指标页面查看您的使用情况统计信息,确保您的应用按预期正常运行。请密切关注调用的方法,解决任何意外或过度使用的问题,然后再继续。
- 如果用量看起来正常,请转到配额页面,点击每日查询量旁边的修改图标,然后点击“申请更高配额”链接。
在提交提高配额的申请之前,请务必查看相关信息,并按照配额申请表单中的说明操作。