В этом руководстве рассказывается о лимитах и квотах при работе с 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