Poiché l'API Google Chat è un servizio condiviso, applichiamo quote e limitazioni per assicurarci che venga utilizzata in modo equo da tutti gli utenti e per proteggere le prestazioni complessive di Google Workspace.
Se superi una quota, riceverai una risposta con codice di stato HTTP 429: Too many requests
. Anche ulteriori controlli dei limiti di frequenza nel backend di Chat potrebbero generare la stessa risposta di errore. Se si verifica questo errore, dovresti utilizzare un algoritmo di backoff esponenziale e riprovare più tardi. Se rimani entro le quote al minuto elencate nelle tabelle seguenti, non esiste un limite al numero di richieste che puoi effettuare al giorno.
Ai metodi dell'API Chat si applicano due tipi di quota: per spazio e per progetto.
Quote per spazio
Le quote per spazio limitano la frequenza delle query in un determinato spazio e vengono condivise tra tutte le app di Chat che agiscono in quello spazio chiamando i metodi dell'API Chat elencati per ogni quota.
La seguente tabella descrive in dettaglio i limiti di query per spazio:
Quota per spazio |
Metodi dell'API Chat |
Limite (ogni 60 secondi, condiviso |
---|---|---|
Letture al minuto |
|
900 |
Scritture al minuto |
|
60 |
Quote per progetto
Le quote per progetto limitano la frequenza delle query per un progetto Google Cloud e, di conseguenza, si applicano a una singola app di Chat che chiama i metodi dell'API Chat specificati per ogni quota.
La seguente tabella elenca i limiti di query per progetto. Puoi trovare questi limiti anche nella pagina Quote.
Quota per progetto |
Metodi dell'API Chat |
Limite (ogni 60 secondi) |
---|---|---|
Scritture di messaggi al minuto |
|
3000 |
Letture di messaggi al minuto |
|
3000 |
Operazioni di scrittura abbonamenti al minuto |
|
300 |
Letture abbonamento al minuto |
|
3000 |
Scritture spazi al minuto |
|
60 |
Letture spaziali al minuto |
|
3000 |
Scritture allegati al minuto |
|
600 |
Letture di allegati al minuto |
|
3000 |
Scritture reazioni al minuto |
|
600 |
Letture di reazione al minuto |
|
3000 |
Limiti di utilizzo aggiuntivi
Esistono limiti di quota aggiuntivi per la creazione di spazi di tipo GROUP_CHAT
o SPACE
(utilizzando il metodo spaces.create
o spaces.setup
).
Crea meno di 35 spazi al minuto e 210 spazi all'ora di questi tipi. Gli spazi di tipo DIRECT_MESSAGE
non sono soggetti a questi limiti di quota aggiuntivi.
Le query di grandi dimensioni al secondo (QPS) di qualsiasi API che hanno come target lo stesso spazio possono attivare limiti interni aggiuntivi che non sono visibili nella pagina Quote.
Risolvere gli errori di quota basati sul tempo
Per tutti gli errori basati sul tempo (massimo N richieste ogni X minuti), consigliamo che il tuo codice rilevi l'eccezione e utilizzi un backoff esponenziale troncato per assicurarti che i dispositivi non generino un carico eccessivo.
Il backoff esponenziale è una strategia standard di gestione degli errori per le applicazioni di rete. Un algoritmo di backoff esponenziale riprova le richieste utilizzando tempi di attesa aumentanti in modo esponenziale tra le richieste, fino a un tempo di backoff massimo. Se le richieste continuano a non andare a buon fine, è importante che i ritardi tra le richieste aumentino nel tempo fino all'esito positivo della richiesta.
Algoritmo di esempio
Un algoritmo di backoff esponenziale tenta di eseguire nuovamente le richieste in modo esponenziale, aumentando il tempo di attesa tra un nuovo tentativo e l'altro fino a un tempo di backoff massimo. Ad esempio:
- Invia una richiesta all'API Google Chat.
- Se la richiesta non va a buon fine, attendi 1 +
random_number_milliseconds
e riprova. - Se la richiesta non va a buon fine, attendi 2 +
random_number_milliseconds
e riprova. - Se la richiesta non va a buon fine, attendi 4 +
random_number_milliseconds
e riprova. - E così via, fino a
maximum_backoff
volta. - Continua ad attendere e a riprovare fino al numero massimo di nuovi tentativi, ma non aumentare il periodo di attesa tra un tentativo e l'altro.
dove:
- Il tempo di attesa è
min(((2^n)+random_number_milliseconds), maximum_backoff)
, conn
incrementato di 1 per ogni iterazione (richiesta). random_number_milliseconds
è un numero casuale di millisecondi inferiore o uguale a 1000. Ciò consente di evitare i casi in cui molti client sono sincronizzati da una determinata situazione e riprovano contemporaneamente, inviando le richieste in wave sincronizzate. Il valore dirandom_number_milliseconds
viene ricalcolato dopo ogni richiesta di nuovo tentativo.maximum_backoff
dura in genere 32 o 64 secondi. Il valore appropriato dipende dal caso d'uso.
Il client può continuare a riprovare una volta raggiunta la volta maximum_backoff
.
I nuovi tentativi dopo questo punto non devono continuare ad aumentare il tempo di backoff. Ad esempio, se un client utilizza un tempo maximum_backoff
di 64 secondi, dopo aver raggiunto questo valore, può riprovare ogni 64 secondi. A un certo punto, ai client dovrebbe essere impedito di riprovare a tempo indeterminato.
Il tempo di attesa tra i nuovi tentativi e il numero di nuovi tentativi dipende dal caso d'uso e dalle condizioni della rete.
Richiedi un aumento della quota per progetto
A seconda dell'utilizzo delle risorse del progetto, potresti voler richiedere un aumento della quota. Per le chiamate API effettuate da un account di servizio viene utilizzato un singolo account. La richiesta di un aumento della quota non ne garantisce l'approvazione. L'approvazione di aumenti di quota significativi può richiedere più tempo.
Non tutti i progetti hanno le stesse quote. Con l'uso crescente di Google Cloud nel tempo, le tue quote potrebbero dover aumentare. Se prevedi un aumento imminente e significativo dell'utilizzo, puoi richiedere un adeguamento della quota proattivamente dalla pagina Quote nella console Google Cloud.
Per saperne di più, consulta le seguenti risorse:
- Informazioni sulle richieste di aumento della quota
- Visualizzare l'utilizzo e i limiti della quota attuale
- Richiedere un limite di quota più elevato