Limites d'utilisation

L'API Google Chat étant un service partagé, nous appliquons des quotas et des limites pour nous assurer qu'elle est utilisée de manière équitable par tous les utilisateurs et pour protéger les performances globales de Google Workspace.

Si vous dépassez un quota, vous recevrez un code d'état HTTP 429: Too many requests. Des vérifications supplémentaires de la limite de débit sur le backend Chat peuvent également générer la même réponse d'erreur. Si cette erreur se produit, vous devez utiliser un algorithme d'intervalle exponentiel entre les tentatives et réessayer plus tard. Tant que vous respectez les quotas par minute indiqués dans les tableaux suivants, le nombre de requêtes que vous pouvez effectuer par jour n'est pas limité.

Plusieurs types de quotas peuvent s'appliquer aux méthodes de l'API Chat : quotas par projet, par espace et par utilisateur.

Quotas par projet

Les quotas par projet limitent le débit des requêtes pour un projet Google Cloud et s'appliquent donc à une seule application Chat qui appelle les méthodes d'API Chat spécifiées pour chaque quota.

Le tableau suivant détaille les limites de requêtes par projet. Vous pouvez également trouver ces limites sur la page Quotas.

Quota par projet

Méthodes de l'API Chat

Limite (par 60 secondes)

Écritures de messages par minute

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Lectures de messages par minute

spaces.messages.get

spaces.messages.list

3000

Écritures d'adhésions par minute

spaces.members.create

spaces.members.delete

300

Lectures d'adhésions par minute

spaces.members.get

spaces.members.list

3000

Écritures d'espaces par minute

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Lectures d'espaces par minute

spaces.get

spaces.list

spaces.findDirectMessage

3000

Écritures de pièces jointes par minute

media.upload

600

Lectures de pièces jointes par minute

spaces.messages.attachments.get

media.download

3000

Écritures de réactions par minute

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Lectures de réactions par minute

spaces.messages.reactions.list

3000

Écritures de CustomEmoji par minute

customEmojis.create

customEmojis.delete

600

Lectures de CustomEmoji par minute

customEmojis.get

customEmojis.list

3000

Écritures de sections par minute

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

600

Lectures de sections par minute

users.sections.list

users.sections.items.list

3000

Quotas par espace

Les quotas par espace limitent le débit des requêtes dans un espace donné et sont partagés entre toutes les applications Chat agissant dans cet espace qui appellent les méthodes d'API Chat listées pour chaque quota.

Le tableau suivant détaille les limites de requêtes par espace :

Quota par espace

Méthodes de l'API Chat

Limite (par seconde)

Lectures par seconde

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

Écritures par seconde

media.upload

spaces.delete

spaces.patch

spaces.messages.create (des limites supplémentaires s'appliquent aux webhooks entrants)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.delete

1

Écritures de création de réactions par seconde

spaces.messages.reactions.create

5

Écritures de messages par seconde lors de l'importation de données dans Google Chat

spaces.messages.create

10

Quotas par utilisateur

Les quotas par utilisateur limitent le débit des requêtes pour un utilisateur Google Chat. Les requêtes concernent toutes les applications Chat qui appellent une méthode d'API Chat au nom d'un utilisateur (à l'aide de l'authentification de l'utilisateur).

Le tableau suivant détaille les limites de requêtes par utilisateur :

Quota par utilisateur

Méthodes de l'API Chat

Limite (par seconde)

Écritures de CustomEmoji par seconde

customEmojis.create

customEmojis.delete

1

Lectures de CustomEmoji par seconde

customEmojis.get

customEmojis.list

15

Écritures de sections par seconde

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

1

Lectures de sections par seconde

users.sections.list

users.sections.items.list

15

Limites d'utilisation supplémentaires

Un trafic d'API élevé ciblant le même espace peut déclencher des limites internes supplémentaires qui ne sont pas visibles sur la page Quotas.

Résoudre les erreurs de quota basées sur le temps

Pour toutes les erreurs basées sur le temps (maximum de N requêtes par X minutes), nous vous recommandons que votre code intercepte l'exception et utilise un intervalle exponentiel entre les tentatives tronqué pour vous assurer que vos appareils ne génèrent pas de charge excessive.

L'intervalle exponentiel entre les tentatives est une stratégie standard de traitement d'erreurs pour les applications réseau. Un algorithme d'intervalle exponentiel entre les tentatives relance les requêtes en augmentant de manière exponentielle le temps d'attente entre les requêtes jusqu'à ce que la durée maximale de l'intervalle soit atteinte. Si les requêtes échouent toujours, il est important que les délais entre les requêtes augmentent au fil du temps jusqu'à ce que la requête réussisse.

Exemple d'algorithme

Un algorithme d'intervalle exponentiel entre les tentatives relance les requêtes de manière exponentielle, en augmentant le temps d'attente entre les tentatives jusqu'à ce que la durée maximale de l'intervalle exponentiel soit atteinte. Exemple :

  1. Envoyez une requête à l'API Google Chat.
  2. Si la requête échoue, attendez 1 + random_number_milliseconds, puis relancez la requête.
  3. Si la requête échoue, attendez 2 + random_number_milliseconds, puis relancez la requête.
  4. Si la requête échoue, attendez 4 + random_number_milliseconds, puis relancez la requête.
  5. Poursuivez ainsi jusqu'à atteindre la valeur maximum_backoff.
  6. Continuez à attendre et à réessayer jusqu'à un nombre maximal de tentatives, mais n'augmentez pas la période d'attente entre les tentatives.

où :

  • Le temps d'attente est min(((2^n)+random_number_milliseconds), maximum_backoff), avec n incrémenté de 1 pour chaque itération (requête).
  • random_number_milliseconds est un nombre aléatoire de millisecondes inférieur ou égal à 1 000. Cela permet d'éviter les cas où de nombreux clients sont synchronisés par une situation et où tous réessayent en même temps, en envoyant des requêtes par vagues synchronisées. La valeur de random_number_milliseconds est recalculée après chaque requête de nouvelle tentative.
  • La valeur maximum_backoff est généralement définie sur 32 ou 64 secondes. La valeur appropriée dépend du cas d'utilisation.

Le client peut continuer à réessayer après avoir atteint la durée maximum_backoff. Au-delà de ce point, il n'est pas nécessaire de continuer à augmenter la durée de l'intervalle exponentiel entre les tentatives. Par exemple, si un client utilise une durée maximum_backoff de 64 secondes, il peut réessayer toutes les 64 secondes après avoir atteint cette valeur. À un certain moment, vous devez empêcher les clients d'effectuer des tentatives à l'infini.

Le temps d'attente entre les tentatives et le nombre de tentatives dépendent de votre cas d'utilisation et des conditions du réseau.

Demander une augmentation du quota par projet

Selon l'utilisation des ressources de votre projet, vous pouvez demander un ajustement de quota. Les appels d'API effectués par un compte de service sont considérés comme utilisant un seul compte. La demande d'ajustement de quota ne garantit pas l'approbation. Les demandes d'ajustement de quota qui augmenteraient considérablement la valeur du quota peuvent nécessiter plus de temps pour être approuvées.

Tous les projets ne sont pas soumis aux mêmes quotas. À mesure que vous utilisez Google Cloud au fil du temps, il peut être nécessaire d'augmenter les valeurs de vos quotas. Si vous prévoyez une augmentation significative de votre utilisation, vous pouvez anticiper cette évolution en demandant des ajustements de quotas sur la page Quotas de la console Google Cloud.

Pour en savoir plus, consultez les ressources suivantes :