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

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

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

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

Квоты на каждый проект

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

В таблице ниже приведены подробные ограничения на количество запросов для каждого проекта. Эти ограничения также можно найти на странице «Квоты» .

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

Методы 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 чата

Лимит (в секунду)

Чтения в секунду

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

15

Количество записей в секунду

media.upload

spaces.delete

spaces.patch

spaces.messages.create (Для входящих веб-хуков действуют дополнительные ограничения)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.delete

1

Создание реакций, количество записей в секунду

spaces.messages.reactions.create

5

Количество сообщений, записываемых в секунду при импорте данных в Google Chat.

spaces.messages.create

10

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

Ограничения на количество запросов для каждого пользователя лимитируют количество запросов. Запросы относятся ко всем приложениям чата, которые вызывают метод API чата от имени пользователя (используя аутентификацию пользователя ).

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

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

Методы API чата

Лимит (в секунду)

Чтения в секунду

customEmojis.get

customEmojis.list

15

Количество записей в секунду

customEmojis.create

customEmojis.delete

1

Дополнительные ограничения на использование

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

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

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

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

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

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

  1. Отправьте запрос к API Google Chat.
  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. После этого значения увеличение backoff time не требуется. Например, если клиент использует значение maximum_backoff time равное 64 секундам, то после достижения этого значения он может повторять попытки каждые 64 секунды. В какой-то момент клиентам следует запретить бесконечные повторные попытки.

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

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

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

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

Для получения более подробной информации ознакомьтесь со следующими ресурсами: