Поскольку API Google Chat является общим сервисом, мы применяем квоты и ограничения, чтобы гарантировать его справедливое использование всеми пользователями и защитить общую производительность Google Workspace.
Если вы превысите квоту, вы получите ответ с кодом состояния HTTP 429: Too many requests
. Дополнительные проверки ограничения скорости на бэкэнде чата также могут привести к такому же ответу. В случае возникновения этой ошибки следует использовать алгоритм экспоненциальной задержки и повторить попытку позже. Пока вы не выходите за рамки поминутных квот, указанных в следующих таблицах, количество запросов, которые вы можете сделать в день, не ограничено.
К методам API чата могут применяться несколько типов квот: квоты на проект, на пространство и на пользователя.
Квоты на проект
Квоты для каждого проекта ограничивают частоту запросов для проекта Google Cloud и, таким образом, применяются к одному приложению Chat, вызывающему указанные методы API Chat для каждой квоты.
В таблице ниже приведены ограничения на количество запросов для каждого проекта. Эти ограничения также можно найти на странице «Квоты» .
Квота на проект | Методы API чата | Лимит (за 60 секунд) |
---|---|---|
Количество сообщений, написанных в минуту | | 3000 |
Прочтений сообщений в минуту | | 3000 |
Количество записей в минуту | | 300 |
Количество прочтений в минуту | | 3000 |
Количество записей в минуту | | 60 |
Количество прочтений в минуту | | 3000 |
Записей вложений в минуту | | 600 |
Количество прочтений вложений в минуту | | 3000 |
Количество сообщений в минуту | | 600 |
Количество прочтений реакции в минуту | | 3000 |
Квоты на место
Квоты для каждого пространства ограничивают скорость запросов в заданном пространстве и являются общими для всех приложений чата, работающих в этом пространстве, вызывая перечисленные методы API чата для каждой квоты.
В следующей таблице приведены ограничения по количеству запросов для каждого пространства:
Квота на место | Методы API чата | Лимит (за 60 секунд) |
---|---|---|
Количество прочтений в минуту | | 900 |
Пишет в минуту | | 60 |
Квоты на пользователя
Квоты на пользователя ограничивают частоту запросов для пользователя Google Chat. Запросы относятся ко всем приложениям Chat, которые вызывают методы API Chat от имени пользователя (используя аутентификацию пользователя ).
В следующей таблице приведены ограничения на количество запросов для каждого пользователя:
Квота на пользователя | Методы API чата | Лимит (за 60 секунд) |
---|---|---|
Количество прочтений в минуту | | 900 |
Пишет в минуту | | 60 |
Дополнительные лимиты использования
Для создания чат-групп типа GROUP_CHAT
или SPACE
(с помощью метода spaces.create
или spaces.setup
) действуют дополнительные квоты. Создавайте менее 35 чат-групп в минуту и 800 чат-групп в час. На чат-группы типа DIRECT_MESSAGE
эти дополнительные квоты не распространяются.
Высокий трафик API, направленный на одно и то же пространство, может привести к возникновению дополнительных внутренних ограничений, которые не отображаются на странице «Квоты» .
Устранение ошибок квот, связанных со временем
Для всех ошибок, связанных со временем (максимум N запросов за X минут), мы рекомендуем, чтобы ваш код перехватывал исключение и использовал усеченную экспоненциальную задержку , чтобы ваши устройства не создавали чрезмерной нагрузки.
Экспоненциальная задержка — стандартная стратегия обработки ошибок для сетевых приложений. Алгоритм экспоненциальной задержки повторяет запросы, используя экспоненциально увеличивающееся время ожидания между запросами, вплоть до максимального значения задержки. Если запросы по-прежнему неуспешны, важно, чтобы задержки между запросами постепенно увеличивались до тех пор, пока запрос не будет успешно выполнен.
Пример алгоритма
Алгоритм экспоненциальной задержки повторяет запросы экспоненциально, увеличивая время ожидания между попытками до максимального значения задержки. Например:
- Сделайте запрос к Google Chat API.
- Если запрос не выполнен, подождите 1 +
random_number_milliseconds
и повторите запрос. - Если запрос не выполнен, подождите 2 +
random_number_milliseconds
и повторите запрос. - Если запрос не выполнен, подождите 4 +
random_number_milliseconds
и повторите запрос. - И так далее, до
maximum_backoff
. - Продолжайте ждать и повторять попытки до достижения максимального количества повторных попыток, но не увеличивайте период ожидания между повторными попытками.
где:
- Время ожидания составляет
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.
Более подробную информацию можно найти на следующих ресурсах:
- О корректировке квот
- Просмотр текущего использования квоты и ограничений
- Запросить более высокий лимит квоты