В этом руководстве рассказывается о лимитах и квотах при работе с 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(HTTP429), аmetadata.quota_limitуказывает на превышение ограничения частоты запросов в минуту (например,IngestionMutateRequestsPerMinutePerProject), повторите запрос, используя экспоненциальную выдержку с джиттером (например, подождите 1, 2 и 4 секунды между повторными попытками).Приостановка при исчерпании дневной квоты. Если
metadata.quota_limitуказывает на дневное ограничение (например,IngestionMutateRequestsPerDayPerProject), не повторяйте попытку сразу. Приостановите отправку запросов до полуночи по тихоокеанскому времени, когда суточная квота будет сброшена.
Ограничения на количество запросов
Ниже приведены ограничения для определенных запросов.
IngestAudienceMembersRequestиRemoveAudienceMembersRequest:10 000 ресурсов
AudienceMemberв спискеaudience_members10 идентификаторов пользователей в
UserDataдляAudienceMember10 ресурсов
Destinationв спискеdestinations
RemoveAllAudienceMembersRequest:- 10 ресурсов
Destinationв спискеdestinations
- 10 ресурсов
-
2000 ресурсов
Eventв спискеevents10 идентификаторов пользователей в
UserDataдляEvent10 ресурсов
Destinationв спискеdestinations