Ограничения и квоты защищают инфраструктуру Google от автоматизированных процессов, использующих API отчетов ненадлежащим образом. Чрезмерное количество запросов к API может быть результатом безобидной опечатки или неэффективной работы системы, выполняющей ненужные вызовы API. Независимо от причины, блокировка трафика из определенного источника после достижения им определенного уровня необходима для общей работоспособности системы Google Workspace. Это гарантирует, что действия одного разработчика не смогут негативно повлиять на все сообщество.
В маловероятном случае сбоя вашего API-запроса вы получите ответ с кодом состояния HTTP. Код состояния 403 содержит информацию об ошибке, связанной с некорректными входными данными, а код состояния HTTP 503 — информацию об ошибке, указывающую на превышение квот API. Эти ответы позволяют вашему пользовательскому приложению обнаруживать эти ошибки и предпринимать соответствующие действия.
Если ваши запросы должны быть выполнены за фиксированный период времени, отправляйте их параллельно или используйте несколько потоков в вашем Java- или C#-приложении. Примером параллельных запросов может служить запрос небольших партий электронных писем от разных пользователей, а не добавление или удаление большого количества писем от одного пользователя одновременно. В случае использования потоков попробуйте начать с 10 потоков, по одному потоку на каждое электронное письмо пользователя. Обратите внимание, что рекомендация по количеству потоков имеет свои компромиссы и не подходит для всех ситуаций с API. Если количество запросов станет слишком большим, возникнут ошибки квоты.
Для всех ошибок, связанных со временем (максимум N событий в течение N секунд на поток), особенно для ошибок с кодом состояния 503, мы рекомендуем вашему коду перехватывать исключение и, используя алгоритм экспоненциальной задержки , ждать небольшую паузу перед повторной попыткой неудачного вызова. Пример использования API отчетов для одного потока: подождать 5 секунд и повторить неудачный вызов. Если запрос успешен, повторить этот шаблон для других потоков. Если второй запрос не удался, ваше приложение должно уменьшить частоту запросов до тех пор, пока один из них не будет успешным. Например, увеличить начальную задержку в 5 секунд до 10 секунд и снова повторить неудачный вызов. Также определите лимит повторных попыток. Например, повторите запрос от 5 до 7 раз с разным временем задержки, прежде чем ваше приложение вернет пользователю ошибку.
Пределы
| Категории ограничений API | Пределы |
|---|---|
| Сообщите показатели QPS и QPD | API ограничивает количество запросов для вашего проекта Google Cloud. Значение по умолчанию, установленное в консоли Google Cloud, составляет 2400 запросов в минуту на пользователя на проект Google Cloud. Вы можете увеличить этот лимит на странице «Квоты API» в административном SDK вашего проекта Google Cloud. Если эти лимиты превышены, сервер возвращает код состояния HTTP 503. При повторной отправке запросов используйте алгоритм экспоненциальной задержки . |
Дополнительные ограничения для activities.list | API activities.list имеет дополнительное ограничение в 250 запросов на фильтрацию в минуту (15 000 запросов на фильтрацию в час). Запрос на фильтрацию — это запрос API, содержащий как минимум один из следующих параметров запроса:
|
| Категории квот API | Квоты |
| maxResults | Количество записей, отображаемых на каждой странице ответа API, варьируется от 0 до 1000. Значение по умолчанию — 1000 записей. |
Другие типы ограничений
| Другие типы ограничений | Ограничения и рекомендации |
|---|---|
| Формат данных, по умолчанию | Формат данных по умолчанию — JSON. API также поддерживает формат Atom. |
| Несанкционированные запросы | Google не разрешает несанкционированные запросы к API. Запрос считается несанкционированным, если не предоставлен токен авторизации. Для получения дополнительной информации см. раздел «Авторизация запросов» . |
| Предупреждающие сообщения |
|
Лучшие практики для мероприятий.
Предполагается, что метод activities.list будет использоваться для проведения аудиторских проверок. Для достижения наилучшей производительности ваш запрос должен включать временной диапазон, используя параметры startTime и endTime . Более узкие временные диапазоны приводят к значительному ускорению времени ответа. Этот метод не предназначен для получения большого объема аудиторских журналов. Если вы регулярно исчерпываете квоту запросов фильтра activities.list, рассмотрите следующие варианты:
- Настройте экспорт журналов Google Workspace в BigQuery и используйте мощные API запросов BigQuery для получения и анализа необходимых данных без каких-либо ограничений по квотам API.
- Используйте запросы без фильтрации с указанием временного диапазона и выполняйте фильтрацию на стороне клиента (т.е. реализуйте логику фильтрации в своем приложении) вместо запросов с фильтрацией. Это позволит вам преодолеть ограничение в 250 запросов с фильтрацией в минуту, но вы по-прежнему будете ограничены лимитом в 2400 запросов в минуту на пользователя на проект Google Cloud.