Ограничения и квоты

В этом руководстве рассказывается о лимитах и квотах при работе с Data Manager API.

Ограничения проектов

Чтобы использовать Data Manager API, вам нужен проект Google Cloud. Проект Google Cloud предоставляет клиент OAuth и учетные данные, которые вы используете для аутентификации запросов к API.

Data Manager API применяет ограничения частоты запросов к каждому проекту Google Cloud, разделяя их по сервису и типу операции (чтение или изменение):

Сервис Операция Количество запросов в сутки Количество запросов за минуту
IngestionService Изменение (запись) 100 000 300
IngestionService Чтение 100 000 300
Все остальные сервисы вместе Изменение (запись) 50 000 300
Все остальные сервисы вместе Чтение 50 000 300

Запросы, превышающие лимиты, отклоняются с ошибкой RESOURCE_EXHAUSTED и статусом HTTP 429 Too Many Requests.

Вы можете контролировать свое приложение и смягчать ограничения частоты запросов, активно сокращая количество запросов и регулируя количество запросов в секунду на стороне клиента. Вы также можете настроить оповещения о квотах и мониторинг в консоли Google Cloud, чтобы получать уведомления до того, как приложение достигнет лимитов.

Названия квот

Каждому ограничению соответствует название и показатель ограничения квоты в Google Cloud. Если запрос превышает лимит, Data Manager API возвращает название лимита квоты в стандартных полезных данных ErrorInfo в разделе metadata.quota_limit:

Название квоты Сервис Операция Окно Ограничение
IngestionMutateRequestsPerDayPerProject IngestionService Изменить День 100 000
IngestionMutateRequestsPerMinutePerProject IngestionService Изменить минута 300
IngestionReadRequestsPerDayPerProject IngestionService Чтение День 100 000
IngestionReadRequestsPerMinutePerProject IngestionService Чтение минута 300
ManagementMutateRequestsPerDayPerProject Все остальные сервисы Изменить День 50 000
ManagementMutateRequestsPerMinutePerProject Все остальные сервисы Изменить минута 300
ManagementReadRequestsPerDayPerProject Все остальные сервисы Чтение День 50 000
ManagementReadRequestsPerMinutePerProject Все остальные сервисы Чтение минута 300

Проверьте metadata.quota_limit в полезной нагрузке ErrorInfo, чтобы определить, с чем связана ошибка – с дневным или минутным лимитом. В первом случае нужно приостановить работу до сброса квоты, а во втором – сделать паузу и повторить попытку с экспоненциальной задержкой. Подробнее об ошибках, связанных с квотами и ограничениями частоты запросов…

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

Чтобы максимально увеличить пропускную способность, не превышая квоты проекта, следуйте этим рекомендациям:

  • Группируйте записи в запросах. Включайте в каждый запрос как можно больше записей, но не превышайте ограничения (до 10 000 ресурсов AudienceMember или 2000 ресурсов Event на запрос).

  • Отправляйте до 10 параллельных запросов. Чтобы сократить общее время загрузки, не превышая лимит в 300 запросов в минуту, отправляйте до 10 параллельных запросов в IngestionService.

  • Повторяйте запросы при превышении ограничения частоты запросов в минуту с выдержкой: Если запрос не выполняется и возвращается ошибка RESOURCE_EXHAUSTED (HTTP 429), а metadata.quota_limit указывает на превышение ограничения частоты запросов в минуту (например, IngestionMutateRequestsPerMinutePerProject), повторите запрос, используя экспоненциальную выдержку с джиттером (например, подождите 1, 2 и 4 секунды между повторными попытками).

  • Приостановка при исчерпании дневной квоты. Если metadata.quota_limit указывает на дневное ограничение (например, IngestionMutateRequestsPerDayPerProject), не повторяйте попытку сразу. Приостановите отправку запросов до полуночи по тихоокеанскому времени, когда суточная квота будет сброшена.

Ограничения на количество запросов

Ниже приведены ограничения для определенных запросов.

  • IngestAudienceMembersRequest и RemoveAudienceMembersRequest:

    • 10 000 ресурсов AudienceMember в списке audience_members

    • 10 идентификаторов пользователей в UserData для AudienceMember

    • 10 ресурсов Destination в списке destinations

  • RemoveAllAudienceMembersRequest:

    • 10 ресурсов Destination в списке destinations
  • IngestEventsRequest:

    • 2000 ресурсов Event в списке events

    • 10 идентификаторов пользователей в UserData для Event

    • 10 ресурсов Destination в списке destinations