管理配额

为确保所有用户都能公平使用 Google 日历 API,我们设置了配额。 使用 日历 API:

  • 我们将按项目和每个用户实施 API 用量配额。查看下一项 部分。
  • 一般日历用量限额:避免 日历使用限制
  • 操作限制:您可能随时可能会受到速率限制。例如 。

日历 API 用量配额的类型

强制执行两种类型的配额:

  • 每个项目每分钟:这是指您的 Google Cloud 项目 Google Cloud 项目。
  • 每个用户每个项目每分钟:这是 Cloud 项目中的任何一个特定用户。此限制旨在 有助于确保在您的用户之间公平分配用量。

配额是每分钟计算一次的,使用的是滑动窗口,因此 如果流量在一分钟内超出每分钟配额,则会导致 设置速率限制,以确保 仍然保持在配额范围内

如果超出上述任一配额,您就会受到速率限制, 403 usageLimits 状态代码429 usageLimits 状态代码 。如果出现这种情况,您可以采取以下措施:

  1. 请务必遵循所有最佳做法: 使用指数退避算法随机分配流量模式 使用推送通知
  2. 如果您的项目在发展中,并且您拥有更多用户,可以申请 每个项目的配额增加
  3. 如果达到每位用户的配额限制,您可以执行以下操作:
    • 如果您使用服务账号 为用户分配负载 也可以拆分到多个服务账号中
    • 虽然您可以申请增加每位用户的配额,但通常情况下 建议不要将其提高到超过默认值 可能开始达到其他类型的限制,例如 一般日历使用限制, 或操作限制

申请增加配额

如需查看或更改项目的用量限制,或申请增加配额,请按以下步骤操作:

  1. 如果您的项目还没有结算账号,请创建一个。
  2. 在 API 控制台中访问 API 库中的“已启用的 API”页面,然后从列表中选择一个 API。
  3. 如需查看和更改配额相关设置,请选择配额。如需查看用量统计信息,请选择使用量

使用指数退避算法

如果我们希望您降低请求速率,就会返回 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 的所有使用均无需额外付费。超出配额 请求限制不会产生额外费用,也不会对您的账号收取费用。