Google 日历 API 设有配额,以确保所有用户都能公平使用。使用 Calendar API 时,需要考虑以下三个重要限制:
API 用量配额:按项目和用户强制执行。如需了解更多 信息,请参阅 Calendar API 用量配额类型。
Google 日历的一般用量限制:Google Calendar API 是一项共享 服务,设有相关限制以保护 Google Workspace 系统的整体性能。如需了解详情,请参阅避免 超出日历使用 限制
操作限制:这些限制可能会随时受到限制。例如,如果您尝试快速连续写入单个日历。
Calendar API 配额
系统会强制执行两种类型的配额:
每个项目每分钟 :这是您的 Google Cloud 项目在一分钟内可以发出的请求数。
每个项目每位用户每分钟 :这是任何一位特定用户可以在您的云项目 中发出的请求数。此限制旨在帮助您确保用户之间的用量公平分配。
配额是使用滑动窗口按分钟计算的。如果在一分钟内流量快速突增,超出每分钟配额,则在下一个窗口期间,系统会进行速率限制,以确保平均用量保持在配额范围内。
下表详细介绍了这些限制:
| 用量限额类型 | 限制 |
|---|---|
| 每个项目每分钟 | 10,000 个请求 |
| 每个项目每位用户每分钟 | 600 个请求 |
每日结算阈值
此每个项目每日 限制定义了在产生费用之前,您的 Google Cloud 项目在 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), 每次迭代(请求)后增加 1。n 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 的每分钟配额。
服务器端应用可以注册推送通知,以便在发生感兴趣的事件时通知您。这些通知需要更多设置工作,但可以大幅提高配额使用效率,并提供更好的用户体验。请务必指定您想要接收通知的 eventType。如需了解详情,请参阅推送
通知。
使用服务账号进行适当分配
如果您的应用使用全网域 授权执行请求, 默认情况下,系统会针对“每个项目每位用户每 分钟”配额向服务账号收费,而不是向您模拟的用户收费。这意味着,即使服务账号可能在多个用户的日历上运行,也可能会用完配额并受到速率限制。
您可以使用 quotaUser 网址参数(或 x-goog-quota-user HTTP 标头)来指明向哪个用户收费,从而避免这种情况。这仅用于配额计算。如需了解详情,请参阅限制每
用户的请求数。
测试配额限制处理
为确保您的应用在实际操作中能够妥善处理达到配额限制的情况 (例如,通过使用指数退避算法进行重试),并尽可能减少对用户的干扰 ,我们强烈建议您在真实环境中测试您的场景。
如需在不干扰实际应用使用的情况下进行测试,我们建议您 在 Google Cloud 控制台中注册一个仅用于测试的项目,然后以与正式 项目类似的方式 配置 OAuth 同意屏幕。然后,您可以为此项目设置人为的低配额 限制,并观察应用 的行为。
日历 MCP 服务器配额
日历 MCP 服务器使用查询费用分配指标。下表按部分详细介绍了每个日历 MCP 服务器方法的查询费用:
日历 MCP 配额
系统会强制执行两种类型的配额:
每个项目每分钟 :这是您的 Google Cloud 项目在一分钟内的查询费用。
每个项目每位用户每分钟 :这是任何一位特定用户可以在您的 Google Cloud 项目中在一分钟内使用的查询费用。
下表详细介绍了这些配额:
| 用量限额类型 | 查询费用 |
|---|---|
| 每个项目每分钟 | 10,000 |
| 每个项目每位用户每分钟 | 600 |
日历 MCP 工具集配额
下表详细介绍了每个 calendarmcp.googleapis.com 工具集的查询费用:
| 端点 | 工具 | 查询费用 |
|---|---|---|
/mcp/v1 |
|
1 |
|
10 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
如需了解详情,请参阅日历 MCP API 参考文档。