Limites e cotas

Siga este guia para entender os limites e as cotas ao trabalhar com a API Data Manager.

Limites de projetos

Você precisa de um projeto do Google Cloud para usar a API Data Manager. O projeto do Google Cloud fornece o cliente OAuth e as credenciais que você usa para autenticar solicitações de API.

A API Data Manager aplica limites de taxa em cada projeto do Google Cloud, separados por serviço e tipo de operação (leitura versus mutação):

Serviço Operação Solicitações por dia Solicitações por minuto
IngestionService Modificar (gravação) 100.000 300
IngestionService Ler 100.000 300
Todos os outros serviços combinados Modificar (gravação) 50.000 300
Todos os outros serviços combinados Ler 50.000 300

As solicitações que excedem os limites são rejeitadas com o erro RESOURCE_EXHAUSTED e o status HTTP 429 Too Many Requests.

É possível assumir o controle do app e mitigar a limitação de taxa reduzindo o número de solicitações e limitando as QPS do lado do cliente. Também é possível configurar alertas de cota e monitoramento no console do Google Cloud para receber notificações antes que o aplicativo atinja os limites.

Nomes de cotas

Cada limite corresponde a um nome de limite de cota e uma métrica no Google Cloud. Quando uma solicitação excede um limite, a API Data Manager retorna o nome do limite de cota no payload de detalhes padrão ErrorInfo em metadata.quota_limit:

Nome do limite de cota Serviço Operação Janela Limite
IngestionMutateRequestsPerDayPerProject IngestionService Modificar Dia 100.000
IngestionMutateRequestsPerMinutePerProject IngestionService Modificar Minuto 300
IngestionReadRequestsPerDayPerProject IngestionService Ler Dia 100.000
IngestionReadRequestsPerMinutePerProject IngestionService Ler Minuto 300
ManagementMutateRequestsPerDayPerProject Todos os outros serviços Modificar Dia 50.000
ManagementMutateRequestsPerMinutePerProject Todos os outros serviços Modificar Minuto 300
ManagementReadRequestsPerDayPerProject Todos os outros serviços Ler Dia 50.000
ManagementReadRequestsPerMinutePerProject Todos os outros serviços Ler Minuto 300

Inspecione metadata.quota_limit no payload ErrorInfo para distinguir entre erros de limite diário e por minuto e determinar se é necessário pausar temporariamente e tentar novamente com espera ou pausar até que a cota diária seja redefinida. Para mais detalhes, consulte Erros de cota e limite de taxa.

Lidar com limites de taxa e simultaneidade

Para maximizar a capacidade de processamento sem exceder as cotas do projeto, siga estas diretrizes:

  • Agrupar registros por solicitação: inclua o máximo de registros possível em cada solicitação até os limites de solicitação (até 10.000 recursos AudienceMember ou 2.000 recursos Event por solicitação).

  • Envie até 10 solicitações simultâneas: para reduzir o tempo total de ingestão sem exceder o limite de 300 solicitações por minuto, envie até 10 solicitações simultâneas para IngestionService.

  • Tente novamente os limites de taxa por minuto com espera: se uma solicitação falhar com RESOURCE_EXHAUSTED (HTTP 429) e metadata.quota_limit indicar um limite por minuto (como IngestionMutateRequestsPerMinutePerProject), tente novamente usando a espera exponencial com jitter (por exemplo, aguardando 1s, 2s e 4s entre as tentativas).

  • Pausa ao esgotar a cota diária: se metadata.quota_limit indicar um limite diário (como IngestionMutateRequestsPerDayPerProject), não tente novamente de imediato. Pause as solicitações até que a cota diária seja redefinida à meia-noite, horário do Pacífico.

Limites de solicitações

Confira os limites para solicitações específicas: