为确保所有用户都能公平使用 Google 日历 API,我们设置了配额。 使用 日历 API:
- 我们将按项目和每个用户实施 API 用量配额。查看下一项 部分。
- 一般日历用量限额:避免 日历使用限制。
- 操作限制:您可能随时可能会受到速率限制。例如 。
日历 API 用量配额的类型
强制执行两种类型的配额:
- 每个项目每分钟:这是指您的 Google Cloud 项目 Google Cloud 项目。
- 每个用户每个项目每分钟:这是 Cloud 项目中的任何一个特定用户。此限制旨在 有助于确保在您的用户之间公平分配用量。
配额是每分钟计算一次的,使用的是滑动窗口,因此 如果流量在一分钟内超出每分钟配额,则会导致 设置速率限制,以确保 仍然保持在配额范围内
如果超出上述任一配额,您就会受到速率限制,
403 usageLimits
状态代码
或
429 usageLimits
状态代码
。如果出现这种情况,您可以采取以下措施:
- 请务必遵循所有最佳做法: 使用指数退避算法, 随机分配流量模式 使用推送通知。
- 如果您的项目在发展中,并且您拥有更多用户,可以申请 每个项目的配额增加。
- 如果达到每位用户的配额限制,您可以执行以下操作:
申请增加配额
如需查看或更改项目的用量限制,或申请增加配额,请按以下步骤操作:
- 如果您的项目还没有结算账号,请创建一个。
- 在 API 控制台中访问 API 库中的“已启用的 API”页面,然后从列表中选择一个 API。
- 如需查看和更改配额相关设置,请选择配额。如需查看用量统计信息,请选择使用量。
使用指数退避算法
如果我们希望您降低请求速率,就会返回 403 "usageLimits"响应或 429 响应(请参阅 完整的错误文档)。 这不是严重错误,请在短暂响应后重试请求 。如果收到的请求仍然过快,我们会再次询问,并 依此类推。为了能够正常运行,务必要确保 请求数量会随着时间的推移而增加
通常,您应使用截断指数退避算法;该 Cloud Storage 文档 它很好地解释了其工作原理和首选算法。如果您 使用 Google 客户端库时,系统通常会为您完成此流程;咨询 库文档通常,您应该使用库实现 而不是自己编写代码。
随机选择流量模式
日历客户端容易出现由以下原因引起的流量激增: 多个客户端同时执行操作例如,一个常见的 对于日历客户端,最好是在 午夜。这几乎肯定会导致超出您的每分钟配额 从而导致速率限制和退避
为避免发生这种情况,请确保您的流量分布在一天当中 。如果您的客户端需要执行每日同步,请让客户端 确定一个随机时间(因客户而异)。如果您需要对 调整区间 +/- 25%。这将分配 更均匀地投放流量,提供更出色的用户体验。
使用推送通知
一个常见的用例是想在发生变化时执行操作 。这里的反模式是反复轮询 感兴趣的日历。这将很快用完您的所有配额,例如 如果您的应用有 5,000 个用户,并且对每个用户的日历进行一次轮询,则 那么这一过程需要的每分钟配额至少为 5,000 然后才能完成任何工作
服务器端应用可以注册推送通知
在发生您感兴趣的事情时通知您。这些需要更多工作才能
但可让您更高效地利用配额
提供更好的用户体验请务必为eventType
以及您想接收通知的内容如需了解详情,请参阅
推送通知。
通过服务账号进行正确核算
如果您的应用使用
全网域授权
默认情况下,服务账号按照“每分钟/分钟”
每位用户的项目”配额,而不是您所模拟的用户。这意味着
该服务账号可能会耗尽配额并受到速率限制
即使它可能在多个用户的同一位置上运行日历。您可以避免
为此,请使用 quotaUser
网址参数(或 x-goog-quota-user
HTTP)
标头),以指明将向哪个用户收取费用。这仅用于配额
计算。请参阅
限制每位用户的请求数
请参阅 Cloud 文档。
测试配额限制处理
为了确保您的应用可以正常处理达到 (例如,通过使用指数退避算法重试)和 尽可能减少可能对用户造成的干扰,我们强烈建议 真实环境中的场景和场景。
为了避免此类测试干扰您的实际应用使用, 建议您在 Google Cloud 控制台中 Google API 控制台和 配置它 部署项目然后,您可以 设置为人为降低 并观察应用的行为。
价格
Google 日历 API 的所有使用均无需额外付费。超出配额 请求限制不会产生额外费用,也不会对您的账号收取费用。