Лимиты на использование

Поскольку API Google Chat является общим сервисом, мы применяем квоты и ограничения, чтобы гарантировать его справедливое использование всеми пользователями и защитить общую производительность Google Workspace.

Если вы превысите квоту, вы получите ответ с кодом состояния HTTP 429: Too many requests . Дополнительные проверки ограничения скорости на бэкэнде чата также могут привести к такому же ответу. В случае возникновения этой ошибки следует использовать алгоритм экспоненциальной задержки и повторить попытку позже. Пока вы не выходите за рамки поминутных квот, указанных в следующих таблицах, количество запросов, которые вы можете сделать в день, не ограничено.

К методам API чата могут применяться несколько типов квот: квоты на проект, на пространство и на пользователя.

Квоты на проект

Квоты для каждого проекта ограничивают частоту запросов для проекта 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

Квоты на место

Квоты для каждого пространства ограничивают скорость запросов в заданном пространстве и являются общими для всех приложений чата, работающих в этом пространстве, вызывая перечисленные методы API чата для каждой квоты.

В следующей таблице приведены ограничения по количеству запросов для каждого пространства:

Квота на место

Методы API чата

Лимит (за 60 секунд)

Количество прочтений в минуту

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 Chat. Запросы относятся ко всем приложениям Chat, которые вызывают методы API Chat от имени пользователя (используя аутентификацию пользователя ).

В следующей таблице приведены ограничения на количество запросов для каждого пользователя:

Квота на пользователя

Методы API чата

Лимит (за 60 секунд)

Количество прочтений в минуту

customEmojis.get

customEmojis.list

900

Пишет в минуту

customEmojis.create

customEmojis.delete

60

Дополнительные лимиты использования

Для создания чат-групп типа GROUP_CHAT или SPACE (с помощью метода spaces.create или spaces.setup ) действуют дополнительные квоты. Создавайте менее 35 чат-групп в минуту и 800 чат-групп в час. На чат-группы типа DIRECT_MESSAGE эти дополнительные квоты не распространяются.

Высокий трафик API, направленный на одно и то же пространство, может привести к возникновению дополнительных внутренних ограничений, которые не отображаются на странице «Квоты» .

Устранение ошибок квот, связанных со временем

Для всех ошибок, связанных со временем (максимум N запросов за X минут), мы рекомендуем, чтобы ваш код перехватывал исключение и использовал усеченную экспоненциальную задержку , чтобы ваши устройства не создавали чрезмерной нагрузки.

Экспоненциальная задержка — стандартная стратегия обработки ошибок для сетевых приложений. Алгоритм экспоненциальной задержки повторяет запросы, используя экспоненциально увеличивающееся время ожидания между запросами, вплоть до максимального значения задержки. Если запросы по-прежнему неуспешны, важно, чтобы задержки между запросами постепенно увеличивались до тех пор, пока запрос не будет успешно выполнен.

Пример алгоритма

Алгоритм экспоненциальной задержки повторяет запросы экспоненциально, увеличивая время ожидания между попытками до максимального значения задержки. Например:

  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 — случайное число миллисекунд, меньшее или равное 1000. Это помогает избежать ситуаций, когда множество клиентов синхронизируются по какой-либо причине и все одновременно повторяют попытку, отправляя запросы синхронизированными волнами. Значение random_number_milliseconds пересчитывается после каждого повторного запроса.
  • maximum_backoff обычно составляет 32 или 64 секунды. Выбор значения зависит от конкретного случая.

Клиент может продолжать повторные попытки после достижения maximum_backoff time). Повторные попытки после этого момента не требуют дальнейшего увеличения времени отсрочки. Например, если клиент использует максимальное время maximum_backoff time) 64 секунды, то после достижения этого значения он сможет повторять попытки каждые 64 секунды. В какой-то момент следует запретить клиентам бесконечно повторять попытки.

Время ожидания между попытками и количество попыток зависят от вашего варианта использования и состояния сети.

Запросить увеличение квоты для каждого проекта

В зависимости от использования ресурсов вашим проектом вам может потребоваться запросить корректировку квоты. Вызовы API, выполняемые сервисной учётной записью, считаются выполненными с использованием одной учётной записи. Подача заявки на корректировку квоты не гарантирует её одобрения. Запросы на корректировку квоты, которые могут значительно увеличить её значение, могут рассматриваться дольше.

Квоты не у всех проектов одинаковые. По мере того, как вы будете всё активнее использовать Google Cloud, вам может потребоваться увеличить значения квот. Если вы ожидаете значительного роста использования, вы можете заранее запросить корректировку квот на странице «Квоты» в консоли Google Cloud.

Более подробную информацию можно найти на следующих ресурсах: