使用限制

由于 Google Chat API 是一项共享服务,因此我们对 确保所有用户都能公平使用它,并保护整体 Google Workspace 的性能。

如果您超过配额,将会收到 429: Too many requests HTTP 状态代码。针对 Chat 的其他速率限制检查 后端可能也会生成相同的错误响应。如果发生此错误, 应使用 指数退避算法 然后重试。只要不超出 您可以自由地尝试一下 。

Chat API 方法有两种配额类型:按空间和按项目 配额。

每个空间的配额

每个空间的配额可限制给定空间中的查询速率,并在 在该聊天室中执行操作的所有 Chat 应用都会调用列出的 Chat API 方法。

下表详细说明了每个空间的查询限制:

每个空间的配额

Chat API 方法

限制(每 60 秒,
在聊天室中的所有 Chat 应用中共享)

每分钟读取次数

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

每分钟写入次数

media.upload

spaces.delete

spaces.patch

spaces.messages.create(也适用于传入的网络钩子

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

每个项目的配额

每个项目的配额会限制 Google Cloud 项目的查询速率,并且 因此适用于调用指定的 Chat API 方法。

下表详细说明了每个项目的查询限制。您还可以 配额页面上的这些限制。

每个项目的配额

Chat API 方法

限制(每 60 秒)

每分钟消息写入次数

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

每分钟消息读取次数

spaces.messages.get

spaces.messages.list

3000

每分钟成员资格写入次数

spaces.members.create

spaces.members.delete

300

每分钟成员资格读取次数

spaces.members.get

spaces.members.list

3000

每分钟的空间写入次数

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

每分钟的空间读取次数

spaces.get

spaces.list

spaces.findDirectMessage

3000

每分钟的附件写入次数

media.upload

600

每分钟附件读取次数

spaces.messages.attachments.get

media.download

3000

每分钟的回应写入次数

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

每分钟回应读取次数

spaces.messages.reactions.list

3000

其他用量限额

创建“GROUP_CHAT”类型的聊天室时存在额外的配额限制 或 SPACE(通过使用 spaces.createspaces.setup 方法)。 每分钟创建少于 35 个聊天室,每分钟创建 210 个聊天室 这些类型。DIRECT_MESSAGE 类型的聊天室不受这些条件约束 额外配额限制。

针对同一空间的任何 API 都会触发大量每秒查询次数 (QPS) 其他内部限制,而这些内部限制不会显示在 配额页面。

解决基于时间的配额错误

对于所有基于时间的错误(每 X 分钟最多 N 次请求),我们建议 代码会捕获异常并使用截断的指数退避算法来确保 设备不会产生过多的负载。

指数退避算法是网络应用的标准错误处理策略。一个 指数退避算法使用呈指数增加的等待时间重试请求 最长退避时间。如果请求仍未成功 需要注意的是,请求之间的延迟时间会随着时间的推移不断增加,直到请求成功为止。

示例算法

指数退避算法以指数方式重试请求,增加了等待时间 直至达到最长退避时间。例如:

  1. 向 Google Chat 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 秒重试一次。在某个时间点 应防止客户端无限期重试。

重试之间的等待时间和重试次数取决于您的使用场景 和网络状况

申请提高每个项目的配额

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

并非所有项目的配额都完全相同。随着您越来越多地使用 Google Cloud, 您的配额可能需要增加。如果您预计 您可以主动 申请配额调整“配额”页面中 Google Cloud 控制台中。

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