Limiti di utilizzo

Poiché l'API Google Chat è un servizio condiviso, applichiamo quote e limitazioni per garantire 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. Controlli aggiuntivi dei limiti di frequenza sul backend di Chat potrebbero generare la stessa risposta di errore. Se si verifica questo errore, devi utilizzare un algoritmo di backoff esponenziale e riprovare più tardi. Se rispetti 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 possono essere applicati più tipi di quote: quote per progetto, per spazio e per utente.

Quote per progetto

Le quote per progetto limitano la frequenza delle query per un progetto Google Cloud e, pertanto, si applicano a una singola app di Chat che chiama i metodi dell'API Chat specificati per ogni quota.

La tabella seguente descrive in dettaglio i limiti delle query per progetto. Puoi trovare questi limiti anche nella pagina Quote.

Quota per progetto

Metodi dell'API Chat

Limite (per 60 secondi)

Scritture di messaggi al minuto

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Letture di messaggi al minuto

spaces.messages.get

spaces.messages.list

3000

Scritture di appartenenze al minuto

spaces.members.create

spaces.members.delete

300

Letture di appartenenze al minuto

spaces.members.get

spaces.members.list

3000

Scritture di spazi al minuto

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Letture di spazi al minuto

spaces.get

spaces.list

spaces.findDirectMessage

3000

Scritture di allegati al minuto

media.upload

600

Letture di allegati al minuto

spaces.messages.attachments.get

media.download

3000

Scritture di reazioni al minuto

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Letture di reazioni al minuto

spaces.messages.reactions.list

3000

Scritture di CustomEmoji al minuto

customEmojis.create

customEmojis.delete

600

Letture di CustomEmoji al minuto

customEmojis.get

customEmojis.list

3000

Scritture di sezioni al minuto

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

600

Letture di sezioni al minuto

users.sections.list

users.sections.items.list

3000

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 tabella seguente descrive in dettaglio i limiti delle query per spazio:

Quota per spazio

Metodi dell'API Chat

Limite (per secondo)

Letture al secondo

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

15

Scritture al secondo

media.upload

spaces.delete

spaces.patch

spaces.messages.create (si applicano limiti aggiuntivi ai webhook in entrata)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.delete

1

Scritture di creazione di reazioni al secondo

spaces.messages.reactions.create

5

Scritture di messaggi al secondo durante l'importazione di dati in Google Chat

spaces.messages.create

10

Quote per utente

Le quote per utente limitano la frequenza delle query per un utente di Google Chat. Le query riguardano tutte le app di Chat che chiamano un metodo dell'API Chat per conto di un utente (utilizzando l'autenticazione utente).

La tabella seguente descrive in dettaglio i limiti delle query per utente:

Quota per utente

Metodi dell'API Chat

Limite (per secondo)

Scritture di CustomEmoji al secondo

customEmojis.create

customEmojis.delete

1

Letture di CustomEmoji al secondo

customEmojis.get

customEmojis.list

15

Scritture di sezioni al secondo

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

1

Letture di sezioni al secondo

users.sections.list

users.sections.items.list

15

Limiti di utilizzo aggiuntivi

Un traffico API elevato che ha come target lo stesso spazio può 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), ti consigliamo di fare in modo che il codice rilevi l'eccezione e utilizzi un backoff esponenziale troncato per assicurarti che i tuoi 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 ripete i tentativi di richiesta utilizzando tempi di attesa tra le richieste che aumentano in modo esponenziale, fino a un tempo di backoff massimo. Se le richieste non vanno ancora a buon fine, è importante che i ritardi tra le richieste aumentino nel tempo fino a quando la richiesta non va a buon fine.

Algoritmo di esempio

Un algoritmo di backoff esponenziale ripete i tentativi di richiesta in modo esponenziale, aumentando il tempo di attesa tra i tentativi fino a un tempo di backoff massimo. Ad esempio:

  1. Effettua una richiesta all'API Google Chat.
  2. Se la richiesta non va a buon fine, attendi 1 + random_number_milliseconds e riprova la richiesta.
  3. Se la richiesta non va a buon fine, attendi 2 + random_number_milliseconds e riprova la richiesta.
  4. Se la richiesta non va a buon fine, attendi 4 + random_number_milliseconds e riprova la richiesta.
  5. E così via, fino a un tempo di maximum_backoff.
  6. Continua ad attendere e a riprovare fino a un numero massimo di tentativi, ma non aumentare il periodo di attesa tra i tentativi.

dove:

  • Il tempo di attesa è min(((2^n)+random_number_milliseconds), maximum_backoff), con n incrementato di 1 per ogni iterazione (richiesta).
  • random_number_milliseconds è un numero casuale di millisecondi minore o uguale a 1000. In questo modo si evitano casi in cui molti client vengono sincronizzati da una determinata situazione e riprovano tutti contemporaneamente, inviando richieste in onde sincronizzate. Il valore di random_number_milliseconds viene ricalcolato dopo ogni tentativo di richiesta.
  • maximum_backoff è in genere 32 o 64 secondi. Il valore appropriato dipende dal caso d'uso.

Il client può continuare a riprovare dopo aver raggiunto il tempo maximum_backoff. I nuovi tentativi dopo questo punto non devono continuare ad aumentare il tempo di backoff. Ad esempio, se un client utilizza un valore maximum_backoff di 64 secondi, dopo aver raggiunto questo valore, il client può riprovare ogni 64 secondi. A un certo punto, è necessario impedire ai client di effettuare ulteriori tentativi indefinitamente.

Il tempo di attesa tra i tentativi e il numero di tentativi dipendono dal caso d'uso e dalle condizioni di rete.

Richiedere un aumento della quota per progetto

A seconda dell'utilizzo delle risorse del progetto, potresti voler richiedere un aggiustamento della quota. Le chiamate API effettuate da un account di servizio vengono considerate come se utilizzassero un singolo account. La richiesta di una quota aggiustata non ne garantisce l'approvazione. L'approvazione delle richieste di aggiustamento della quota che aumenterebbero in modo significativo il valore della quota può richiedere più tempo.

Non tutti i progetti hanno le stesse quote. Man mano che utilizzi sempre più Google Cloud nel tempo, i valori delle quote potrebbero dover aumentare. Se prevedi un aumento imminente e consistente dell'utilizzo, puoi richiedere un aggiustamento della quota in modo proattivo nella pagina Quote della console Google Cloud.

Per saperne di più, consulta le seguenti risorse: