L'API Gmail est soumise à des limites d'utilisation qui restreignent la fréquence d'appel des méthodes de l'API. Les limites sont définies en termes d'unités de quota, une unité de mesure abstraite représentant l'utilisation des ressources Gmail. Deux limites d'utilisation sont appliquées simultanément : une limite de débit par projet et une limite de débit par utilisateur.
Le tableau suivant détaille ces limites :
| Type de limite d'utilisation | Limite | Code d'erreur |
|---|---|---|
| Limite de débit par projet | 1 200 000 unités de quota par minute | rateLimitExceeded |
| Limite de débit par utilisateur | 15 000 unités de quota par minute et par utilisateur | userRateLimitExceeded |
Pour savoir comment gérer les erreurs de limite, consultez Résoudre les erreurs.
Utilisation du quota par méthode
Le nombre d'unités de quota consommées par une requête varie en fonction de la méthode appelée. Le tableau suivant présente l'utilisation des unités de quota par méthode :
| Méthode | Unités de quota |
|---|---|
drafts.create |
10 |
drafts.delete |
10 |
drafts.get |
5 |
drafts.list |
5 |
drafts.send |
100 |
drafts.update |
15 |
getProfile |
1 |
history.list |
2 |
labels.create |
5 |
labels.delete |
5 |
labels.get |
1 |
labels.list |
1 |
labels.update |
5 |
messages.attachments.get |
5 |
messages.batchDelete |
50 |
messages.batchModify |
50 |
messages.delete |
10 |
messages.get |
5 |
messages.import |
25 |
messages.insert |
25 |
messages.list |
5 |
messages.modify |
5 |
messages.send |
100 |
messages.trash |
5 |
messages.untrash |
5 |
settings.delegates.create |
100 |
settings.delegates.delete |
5 |
settings.delegates.get |
1 |
settings.delegates.list |
1 |
settings.filters.create |
5 |
settings.filters.delete |
5 |
settings.filters.get |
1 |
settings.filters.list |
1 |
settings.forwardingAddresses.create |
100 |
settings.forwardingAddresses.delete |
5 |
settings.forwardingAddresses.get |
1 |
settings.forwardingAddresses.list |
1 |
settings.getAutoForwarding |
1 |
settings.getImap |
1 |
settings.getPop |
1 |
settings.getVacation |
1 |
settings.sendAs.create |
100 |
settings.sendAs.delete |
5 |
settings.sendAs.get |
1 |
settings.sendAs.list |
1 |
settings.sendAs.update |
100 |
settings.sendAs.verify |
100 |
settings.updateAutoForwarding |
5 |
settings.updateImap |
5 |
settings.updatePop |
100 |
settings.updateVacation |
5 |
stop |
50 |
threads.delete |
20 |
threads.get |
10 |
threads.list |
10 |
threads.modify |
10 |
threads.trash |
10 |
threads.untrash |
10 |
watch |
100 |
Lorsque vous utilisez l'API Gmail, vous êtes également limité à 500 destinataires par e-mail.
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 aboutisse.
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 :
- Envoyez une requête à l'API Gmail.
- Si la requête échoue, attendez 1 +
random_number_milliseconds, puis relancez la requête. - Si la requête échoue, attendez 2 +
random_number_milliseconds, puis relancez la requête. - Si la requête échoue, attendez 4 +
random_number_milliseconds, puis relancez la requête. - Poursuivez ainsi jusqu'à atteindre la valeur
maximum_backoff. - Continuez à attendre et à relancer la requête jusqu'à un nombre maximal de tentatives, mais n'augmentez pas le délai d'attente entre les tentatives.
où :
- Le temps d'attente est défini sur
min(((2^n)+random_number_milliseconds), maximum_backoff), avecnincrémenté de 1 pour chaque itération (requête). random_number_millisecondsest un nombre aléatoire de millisecondes inférieur ou égal à 1 000. Cela permet d'éviter les cas où de nombreux clients se retrouvent synchronisés pour une raison quelconque et effectuent tous une nouvelle tentative en même temps, en envoyant des requêtes par vagues synchronisées. La valeur derandom_number_millisecondsest recalculée après chaque nouvelle tentative de la requête.- La valeur
maximum_backoffest généralement définie sur 32 ou 64 secondes. La valeur appropriée dépend du cas d'utilisation.
Le client peut continuer à relancer la requête une fois qu'il a 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 relancer la requête toutes les 64 secondes une fois
cette valeur atteinte. À un moment donné,
les clients doivent être empêchés de relancer la requête indéfiniment.
Le temps d'attente entre les nouvelles tentatives et le nombre de tentatives dépendent de votre cas d'utilisation et des conditions du réseau.
Tarifs
L'utilisation de l'API Gmail est disponible sans frais supplémentaires. Le dépassement des limites de requêtes de quota n'entraîne pas de frais supplémentaires et votre compte n'est pas facturé.
Demander une augmentation du quota
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 votre utilisation de Google Cloud s'accroît, les valeurs de vos quotas peuvent devoir augmenter. 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 :
- À propos des ajustements de quotas
- Afficher votre utilisation et vos limites de quotas actuelles
- Demander l'augmentation d'une limite de quota
Articles associés
- Amélioration des performances
- Limites d'envoi et de réception des messages
- Limites d'envoi Gmail dans Google Workspace