Limites de uso

Como a API Google Chat é um serviço compartilhado, aplicamos cotas e limitações para garantir que ela seja usada de maneira justa por todos os usuários e para proteger o desempenho geral do Google Workspace.

Se você exceder uma cota, vai receber uma resposta 429: Too many requests do código de status HTTP. As verificações extras de limite de taxa no back-end do Chat também podem gerar a mesma resposta de erro. Se esse erro acontecer, use um algoritmo de espera exponencial e tente novamente mais tarde. Desde que você respeite as cotas por minuto listadas nas tabelas a seguir, não há limite para o número de solicitações que podem ser feitas por dia.

Dois tipos de cota se aplicam aos métodos da API Chat: cotas por espaço e por projeto.

Cotas por espaço

As cotas por espaço limitam a taxa de consultas em um determinado espaço e são compartilhadas entre todos os apps do Chat que atuam nesse espaço chamando os métodos listados da API Chat para cada cota.

A tabela a seguir detalha os limites de consulta por espaço:

Cota por espaço

Métodos da API Chat

Limite (por 60 segundos, compartilhado
entre todos os apps do Chat no espaço)

Leituras por minuto

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

Gravações por minuto

media.upload

spaces.delete

spaces.patch

spaces.messages.create (também se aplica a Webhooks de entrada)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

Cotas por projeto

As cotas por projeto limitam a taxa de consultas de um projeto do Google Cloud e, assim, se aplicam a um único app do Chat que chama os métodos especificados da API Chat para cada cota.

A tabela a seguir detalha os limites de consultas por projeto. Também é possível encontrar esses limites na página Cotas.

Cota por projeto

Métodos da API Chat

Limite (por 60 segundos)

Gravações de mensagens por minuto

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3.000

Leituras de mensagem por minuto

spaces.messages.get

spaces.messages.list

3.000

Gravações de associação por minuto

spaces.members.create

spaces.members.delete

300

Leituras de assinatura por minuto

spaces.members.get

spaces.members.list

3.000

Gravações de espaço por minuto

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Leituras de espaço por minuto

spaces.get

spaces.list

spaces.findDirectMessage

3.000

Gravações de anexos por minuto

media.upload

600

Leituras de anexo por minuto

spaces.messages.attachments.get

media.download

3.000

Gravações de reações por minuto

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Leituras de reação por minuto

spaces.messages.reactions.list

3.000

Limites de uso adicionais

Há limites de cota adicionais para a criação de espaços do tipo GROUP_CHAT ou SPACE (usando o método spaces.create ou spaces.setup). Crie menos de 35 espaços por minuto e 210 espaços por hora desses tipos. Os espaços do tipo DIRECT_MESSAGE não estão sujeitos a esses limites de cota adicionais.

Grandes consultas por segundo (QPS) de qualquer API direcionada ao mesmo espaço podem acionar limites internos adicionais que não estão visíveis na página Cotas.

Resolver erros de cota baseados em tempo

Para todos os erros baseados em tempo (máximo de N solicitações por X minutos), recomendamos que seu código capture a exceção e use uma espera exponencial truncada para garantir que os dispositivos não gerem carga excessiva.

A espera exponencial é uma estratégia padrão de tratamento de erros para aplicativos de rede. Um algoritmo de espera exponencial repete solicitações usando tempos de espera exponencialmente crescentes entre as solicitações, até um tempo máximo de espera. Se as solicitações ainda não tiverem sucesso, é importante que os atrasos entre as solicitações aumentem ao longo do tempo até que elas sejam bem-sucedidas.

Exemplo de algoritmo

Um algoritmo de espera exponencial repete solicitações exponencialmente, aumentando o tempo de espera entre novas tentativas até um tempo máximo de espera. Exemplo:

  1. Faça uma solicitação para a API Google Chat.
  2. Se a solicitação falhar, aguarde 1 + random_number_milliseconds e tente de novo.
  3. Se a solicitação falhar, aguarde 2 + random_number_milliseconds e tente de novo.
  4. Se a solicitação falhar, aguarde 4 + random_number_milliseconds e tente de novo.
  5. E assim por diante, até um tempo maximum_backoff.
  6. Continue aguardando e tentando até um número máximo de novas tentativas, mas não aumente o período de espera entre elas.

onde:

  • O tempo de espera é min(((2^n)+random_number_milliseconds), maximum_backoff), com n incrementado em 1 para cada iteração (solicitação).
  • random_number_milliseconds é um número aleatório de milissegundos menor ou igual a 1.000. Isso ajuda a evitar casos em que muitos clientes são sincronizados por alguma situação e todos tentam novamente ao mesmo tempo, enviando solicitações em ondas sincronizadas. O valor de random_number_milliseconds é recalculado após cada solicitação de nova tentativa.
  • maximum_backoff costuma ser 32 ou 64 segundos. O valor apropriado depende do caso de uso.

O cliente pode continuar tentando novamente depois de maximum_backoff. As novas tentativas após esse ponto não precisam continuar aumentando o tempo de espera. Por exemplo, se um cliente usar um tempo maximum_backoff de 64 segundos, depois de atingir esse valor, ele poderá tentar novamente a cada 64 segundos. Em algum momento, os clientes precisam ser impedidos de tentar novamente indefinidamente.

O tempo de espera entre novas tentativas e o número de novas tentativas depende do caso de uso e das condições da rede.

Solicitar um aumento de cota por projeto

Dependendo do uso de recursos do seu projeto, talvez seja necessário solicitar um aumento de cota. As chamadas de API realizadas por uma conta de serviço usam uma única conta. Solicitar uma cota maior não garante a aprovação. Grandes aumentos de cota podem levar mais tempo para serem aprovados.

Nem todos os projetos têm as mesmas cotas. Conforme você usa cada vez mais o Google Cloud ao longo do tempo, pode ser necessário aumentar as cotas. Caso espere um aumento de uso significativo, solicite o ajuste das cotas na página "Cotas" no console do Google Cloud.

Para saber mais, consulte os seguintes recursos: