Como a API Google Chat é um serviço compartilhado, aplicamos cotas e limitações para garantir que ela seja usada de forma justa por todos os usuários e proteger o desempenho geral do Google Workspace.
Se você exceder uma cota, vai receber uma resposta de código de status HTTP 429: Too many requests
. Outras verificações de limite de taxa no back-end
do Chat também podem gerar a mesma resposta de erro. Se esse erro ocorrer,
use um
algoritmo de espera exponencial
e tente novamente mais tarde. Contanto que você mantenha 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 da API Chat listados para cada cota.
A tabela a seguir detalha os limites de consulta por espaço:
Cota por espaço |
Métodos da Chat API |
Limite (por 60 segundos, compartilhado |
---|---|---|
Leituras por minuto |
|
900 |
Gravações por minuto |
|
60 |
Cotas por projeto
As cotas por projeto limitam a taxa de consultas de um projeto do Google Cloud e, portanto, 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. Você também pode consultar esses limites na página Cotas.
Cota por projeto |
Métodos da Chat API |
Limite (por 60 segundos) |
---|---|---|
Gravações de mensagens por minuto |
|
3000 |
Leituras de mensagens por minuto |
|
3000 |
Gravações de associação por minuto |
|
300 |
Leituras de assinatura por minuto |
|
3000 |
Gravações de espaço por minuto |
|
60 |
Leituras de espaço por minuto |
|
3000 |
Gravações de anexos por minuto |
|
600 |
Leituras de anexos por minuto |
|
3000 |
Gravações de reações por minuto |
|
600 |
Leituras de reação por minuto |
|
3000 |
Limites de uso adicionais
Existem outros limites de cota para a criação de espaços do tipo GROUP_CHAT
ou SPACE
(usando os métodos spaces.create
ou spaces.setup
).
Crie menos de 35 espaços por minuto e 800 espaços por
hora desses tipos. Os espaços do tipo DIRECT_MESSAGE
não estão sujeitos a esses outros limites de cota.
O tráfego de API alto que segmenta o mesmo espaço pode acionar outros limites internos que não aparecem na página Cotas.
Resolver erros de cota baseada em tempo
Para todos os erros baseados em tempo (máximo de N solicitações por X minutos), recomendamos que o código detecte 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 sido bem-sucedidas, é importante aumentar o atraso entre elas 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:
- Faça uma solicitação para a API Google Chat.
- Se a solicitação falhar, aguarde 1 +
random_number_milliseconds
e tente novamente. - Se a solicitação falhar, aguarde 2 +
random_number_milliseconds
e tente novamente. - Se a solicitação falhar, aguarde 4 +
random_number_milliseconds
e tente novamente. - E assim por diante, até um tempo
maximum_backoff
. - Continue aguardando e tentando novamente até um número máximo de novas tentativas, mas não aumente o tempo de espera entre elas.
em que:
- O tempo de espera é
min(((2^n)+random_number_milliseconds), maximum_backoff)
, comn
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 de uma só vez, enviando solicitações em ondas sincronizadas. O valor derandom_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 usa um tempo maximum_backoff
de 64 segundos, depois de atingir
esse valor, o cliente pode 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 seu 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 por uma conta de serviço são consideradas como o uso de 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. À medida que você usa o Google Cloud com o tempo, suas cotas podem aumentar. 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:
- Sobre as solicitações de aumento de cota
- Ver o uso e os limites atuais da sua cota
- Solicitar um limite de cota maior