Google 日历 API 具有配额,以确保所有用户都能公平使用。使用 Calendar API 时,请考虑以下三个重要限制:
API 用量配额:按项目和用户强制执行。如需了解更多 信息,请参阅 Calendar API 用量配额类型。
一般日历用量限制:Calendar API 是一项共享服务,具有限制,以保护 Google Workspace 系统的整体性能 。如需了解详情,请参阅 避免超出日历使用限制。
操作限制:这些限制可能会随时应用。例如,如果您尝试快速连续写入单个日历,则可能会应用限制。
Calendar API 配额
系统会强制执行两种类型的配额:
每个项目每分钟 :这是您的 Google Cloud 项目在一分钟内可以发出的请求数。
每个项目每位用户每分钟 :这是任何一位特定用户可以在您的云项目 中发出的请求数。此限制有助于确保在用户之间公平分配用量。
配额是使用滑动窗口按分钟计算的。如果流量快速突增并超出每分钟配额,则在下一个窗口期间会进行速率限制,以确保平均而言,您的用量保持在配额范围内。
下表详细介绍了这些限制:
| 用量限额类型 | 限制 |
|---|---|
| 每个项目每分钟 | 10,000 个请求 |
| 每个项目每位用户每分钟 | 600 个请求 |
每日结算阈值
此每个项目每日 限制定义了在开始收费之前,您的云项目在 24 小时内可以使用的请求数上限。
如果用量低于此阈值,则不会产生额外费用,并且系统不会向您的 Google Cloud 账号收费。我们将在 2026 年晚些时候分享完整的结算详情,并在任何变更生效前至少提前 90 天发出通知。
您无法申请提高此每日阈值限制。
下表详细介绍了此限制:
| 阈值限制类型 | 限制 |
|---|---|
| 每个项目每日 | 1,000,000 个请求 |
如需了解详情,请参阅 Google Workspace 代理工具和 API 的标准化模型。
解决基于时间的配额错误
对于所有基于时间的错误(每 X 分钟最多 N 个请求),我们建议 您的代码捕获异常并使用截断指数退避算法,以确保您的 设备不会产生过多的负载。
指数退避算法是网络应用的标准错误处理策略。 指数退避算法以指数方式重试请求(不断增加各次请求之间的等待时间,直到达到最大退避时间) 。如果请求仍然失败,请务必随着时间的推移增加请求之间的延迟时间,直到请求成功为止。
示例算法
指数退避算法以指数方式重试请求(不断增加各次重试之间的等待时间 ,直到达到最大退避时间)。例如:
- 向 Google 日历 API 发出请求。
- 如果请求失败,请等待 1 +
random_number_milliseconds秒后再重试 请求。 - 如果请求失败,请等待 2 +
random_number_milliseconds秒后再重试 请求。 - 如果请求失败,请等待 4 +
random_number_milliseconds秒后再重试 请求。 - 依此类推,等待时间上限为
maximum_backoff。 - 等待时间达到上限后,您可以继续等待并重试,直到达到重试次数上限(但接下来的重试操作不会增加各次重试之间的等待时间 )。
其中:
- 等待时间为
min(((2^n)+random_number_milliseconds), maximum_backoff), 每次迭代(请求)后n增加 1。 random_number_milliseconds是小于或等于 1,000 的毫秒数(随机值)。这有助于避免出现以下情况:许多客户端在 某些情况下全部同步进行处理并同时执行重试操作,导致同步发送每一波请求。每次重试请求后,系统都会重新计算random_number_milliseconds的值。maximum_backoff通常为 32 或 64 秒。最适当的值 取决于用例。
客户端在达到 maximum_backoff 时间后可以继续重试。
此后执行的重试不需要继续增加退避时间。例如,如果客户端使用的 maximum_backoff 时间为 64 秒,则在达到此值后,客户端可以每 64 秒重试一次。到了特定时间点后,
客户端应停止无限重试。
重试之间的等待时间和重试次数取决于您的用例 和网络条件。
价格
所有标准 Google 日历 API 用量均免费。超出配额 请求限制的用量计划在 2026 年晚些时候开始向您的 Google Cloud 结算账号收费。 如需了解详情,请参阅 Google Workspace 代理工具和 API 的标准化模型。
申请增加配额
根据项目的资源用量,您可能需要申请调整配额。服务账号的 API 调用被视为使用单个账号。我们无法保证您的调整配额申请一定会得到批准。如果配额调整申请会大幅增加配额值,则可能需要更长时间才能获得批准。
并非所有项目的配额都完全相同。当 Google Cloud 使用量随着时间推移逐步增加时,您的配额值可能需要增加。如果您预计自己的用量即将显著增加,可以在 Google Cloud 控制台的“配额和系统限制”页面中提前申请调整配额。
如需了解详情,请参阅以下资源:
问题排查
如果超出任一配额,您将受到速率限制,并且在响应查询时会收到
403 usageLimits
状态代码或
429 usageLimits
状态代码。
若出现这种情况,您可以尝试以下操作:
如果您的项目不断发展壮大,并且拥有更多用户,您可以申请增加配额。
如果您达到了每用户配额限制,可以执行以下操作:
如果您使用服务账号,请将负载分配给 用户,或将其拆分到多个服务账号之间。
虽然您可以申请增加每用户配额,但通常我们不建议将其增加到超出默认值,因为您的应用可能会达到其他类型的限制,例如一般日历用量限制或操作限制。
注册一个仅用于测试的单独项目,该项目具有与正式项目类似的配置,以测试配额限制处理。如需了解详情, 请参阅测试配额限制处理。
随机化流量模式
由于多个客户端同时执行操作,日历客户端很容易出现流量高峰模式。例如,日历客户端的一种常见不良做法是在午夜执行完整同步。这通常会超出每分钟配额,并导致速率限制和退避。
为避免出现这种情况,请尽可能将流量分散到一天中的各个时间段。如果您的客户端需要执行每日同步,请让客户端确定一个随机时间(每个客户端的时间不同)。如果您需要定期执行某项操作,请将间隔时间调整为 ±25%。这样可以更均匀地分配流量,并提供更好的用户体验。
使用推送通知
一个常见的用例是,每当用户的日历发生变化时,执行一项操作。这里的一种反模式是重复轮询每个感兴趣的日历。这会迅速耗尽您的配额。例如,如果您的应用有 5,000 个用户,并且每分钟轮询每个用户的日历一次,那么即使在执行任何工作之前,也需要至少 5,000 的每分钟配额。
服务器端应用可以注册推送通知,以便在发生感兴趣的事件时,Calendar 会通知您。这些通知需要更多设置工作,但可让您更高效地使用配额,并提供更好的用户体验。指定您希望接收通知的 eventType。如需了解详情,请参阅推送
通知。
使用服务账号进行适当分配
如果您的应用使用全网域 授权执行请求,by 默认情况下,系统会针对"每个项目每位用户每 分钟"配额向服务账号收费,而不是向您要模拟的用户收费。这意味着,即使服务账号可能在多个用户的日历上运行,也可能会耗尽其配额并受到速率限制。
您可以使用 quotaUser 网址参数(或 x-goog-quota-user HTTP 标头)来指明向哪个用户收费,从而避免这种情况。Google 仅将此参数用于配额计算。如需了解详情,请参阅限制
每用户的
请求数。
测试配额限制处理
为了确保您的应用在实际达到配额限制时能够妥善处理 (例如,通过使用指数退避算法进行重试),并最大限度地减少对用户的任何潜在干扰 ,请在真实环境中测试您的应用。
如需在不干扰实际应用使用的情况下进行测试, 请在Google Cloud 控制台 中注册一个仅用于测试的单独项目,然后以与 正式项目类似的方式配置 OAuth 同意 屏幕。然后,您可以为此项目设置人为的低配额 限制,并观察应用 的行为。
Calendar MCP 服务器配额
Calendar MCP 服务器使用查询费用分配指标。下表按部分详细介绍了每个 Calendar MCP 服务器方法的查询费用:
Calendar MCP 配额
系统会强制执行两种类型的配额:
每个项目每分钟 :这是您的云项目在一分钟内的查询费用。
每个项目每位用户每分钟 :这是您的云项目中的任何一位用户在一分钟内可能产生的查询费用。
下表详细介绍了这些配额:
| 用量限额类型 | 查询费用 |
|---|---|
| 每个项目每分钟 | 10,000 |
| 每个项目每位用户每分钟 | 600 |
Calendar MCP 工具集配额
下表详细介绍了每个 calendarmcp.googleapis.com 工具集的查询费用:
| 端点 | 工具 | 查询费用 |
|---|---|---|
/mcp/v1 |
|
1 |
|
10 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
如需了解详情,请参阅 Calendar MCP API 参考文档。