用量限额

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 个请求),我们建议您的代码捕获异常并使用截断指数退避算法,以确保您的设备不会产生过多的负载。

指数退避算法是网络应用的标准错误处理策略。指数退避算法以指数方式重试请求(不断增加各次请求之间的等待时间,直到达到最大退避时间)。如果请求仍然不成功,请务必随着时间的推移增加请求之间的延迟时间,直到请求成功。

示例算法

指数退避算法以指数方式重试请求(不断增加各次重试之间的等待时间,直到达到最大退避时间)。例如:

  1. 向 Google 日历 API 发出请求。
  2. 如果请求失败,请等待 1 + random_number_milliseconds 秒后再重试请求。
  3. 如果请求失败,请等待 2 + random_number_milliseconds 秒后再重试请求。
  4. 如果请求失败,请等待 4 + random_number_milliseconds 秒后再重试请求。
  5. 依此类推,等待时间上限为 maximum_backoff。
  6. 继续等待并重试,直至达到重试次数上限,但不会增加重试之间的等待时间。

其中:

  • 等待时间为 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 结算账号收取费用。 如需了解详情,请参阅适用于代理工具和 API 的 Google Workspace 标准化模型。

申请增加配额

根据项目的资源用量,您可能需要申请调整配额。服务账号发出的 API 调用会被视为使用单个账号。我们无法保证您的调整配额请求一定会得到批准。如果配额调整请求会大幅增加配额值,则可能需要更长时间才能获得批准。

并非所有项目的配额都完全相同。随着您的 Google Cloud 用量逐步增加,您的配额值可能需要增加。如果您预计用量即将显著增加,可以在 Google Cloud 控制台的配额和系统限制页面中主动申请调整配额。

如需了解详情,请参阅以下资源:

问题排查

如果超出任一配额,您将受到速率限制,并会收到 403 usageLimits 状态代码或 429 usageLimits 状态代码作为对查询的响应。

如果发生这种情况,您可以尝试以下操作:

  1. 请务必遵循所有最佳实践:使用指数退避算法、随机化流量模式,并使用推送通知。

  2. 如果您的项目不断发展,用户数量不断增加,您可以申请增加配额。

  3. 如果您达到了每用户配额限制,可以执行以下操作:

    • 如果您使用服务账号,请将负载分配给用户,或在多个服务账号之间拆分负载。

    • 虽然您可以申请提高每用户配额,但通常不建议将其提高到默认值以上,因为您的应用可能会开始达到其他类型的限额,例如一般日历用量限额或操作限额。

  4. 通过注册一个与生产项目具有类似配置的单独测试专用项目来测试配额限制。如需了解详情,请参阅测试配额限制处理。

随机化流量模式

日历客户端容易出现由多个客户端同时执行操作引起的流量高峰模式。例如,日历客户端的一种常见不良做法是在午夜执行完整同步。这几乎肯定会导致超出每分钟配额,并导致速率限制和退避。

为避免出现这种情况,请确保流量尽可能分散在全天。如果您的客户端需要每天同步,请让客户端确定一个随机时间(每个客户端的时间不同)。如果您需要定期执行某项操作,请将时间间隔调整为 +/- 25%。这样可以更均匀地分配流量,并提供更好的用户体验。

使用推送通知

一个常见用例是,每当用户的日历发生变化时,就执行一项操作。这里的一种反模式是重复轮询每个感兴趣的日历。这会很快用完您的所有配额。例如,如果您的应用有 5,000 个用户,并且每分钟轮询一次每个用户的日历,那么在完成任何工作之前,每分钟配额至少需要 5,000。

服务器端应用可以注册推送通知,以便我们在发生您感兴趣的事件时通知您。这些方法需要更多设置工作,但可以显著提高配额使用效率,并提供更好的用户体验。请务必指定您希望收到通知的 eventType。如需了解详情,请参阅推送通知。

使用服务账号进行适当分配

如果您的应用使用全网域授权执行请求,则默认情况下,系统会根据“每个项目每位用户每分钟”配额向服务账号收费,而不是向您模拟的用户收费。这意味着,服务账号可能会用尽配额并受到速率限制,即使它可能在多个用户的日历上运行也是如此。

您可以使用 quotaUser 网址参数(或 x-goog-quota-user HTTP 标头)指定一个唯一标识每个不同用户的任意字符串(最多 40 个字符),从而避免出现这种情况。Calendar API 仅将此值用于配额计算。

如需使用 quotaUser 针对不同用户强制执行每用户速率限制,您的请求必须满足以下要求:

  • 添加受 IP 限制的 API 密钥:在 key 查询参数中传递 API 密钥,并为该密钥配置 IP 地址限制,以指定后端服务器的公共 IP 地址。如果您省略了 API 密钥或未配置 IP 地址限制,Calendar API 会忽略 quotaUser,并向经过身份验证的账号(例如服务账号)收取配额。

  • 省略 X-Goog-User-Project 标头:请勿在使用 quotaUser 的请求中发送 X-Goog-User-Project HTTP 标头。提供用户项目会覆盖用于配额归因的 API 密钥,因此 Calendar API 会忽略 quotaUser。

如需了解详情,请参阅限制每个用户的请求数。

测试配额限制处理

为确保您的应用在实际运行中能够妥善处理达到配额限制的情况(例如,通过使用指数退避算法进行重试),并尽可能减少对用户的潜在干扰,我们强烈建议您在实际环境中测试您的场景。

为了在不干扰实际应用使用的情况下进行测试,我们建议您在 Google Cloud 控制台中注册一个单独的测试专用项目,然后以类似于生产项目的方式配置 OAuth 同意屏幕。然后,您可以为此项目设置人为降低的配额限制,并观察应用的行为。

日历 MCP 服务器配额

Calendar MCP 服务器使用查询费用分摊指标。下表按部分详细介绍了每个 Calendar MCP 服务器方法的查询费用:

日历 MCP 配额

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

  • 每个项目每分钟:这是您的 Google Cloud 项目一分钟的查询费用。

  • 每位用户每个项目每分钟:这是任何一位特定用户在一分钟内可以使用的 Google Cloud 项目的查询费用。

下表详细介绍了这些配额:

用量限额类型 查询费用
每个项目每分钟 10000
每位用户每个项目每分钟 600

日历 MCP 工具集配额

下表详细介绍了每个 calendarmcp.googleapis.com 工具集的查询费用:

端点 工具 查询费用

/mcp/v1

create_event

1

delete_event

10

get_event

1

list_events

1

respond_to_event

1

search_events

1

update_event

1

suggest_time

1

list_calendars

1

如需了解详情,请参阅 Calendar MCP API 参考文档。