Cette page explique les différences entre l'utilisation du
API Cloud Tasks pour gérer les files d'attente
et l'importation d'une tâche Cloud Tasks
queue.yaml
pour atteindre les mêmes objectifs. Elle aborde également certains des pièges liés à l'association de ces deux méthodes et donne des solutions pour résoudre les problèmes courants.
Présentation
L'API Cloud Tasks fournit une interface App Engine indépendante au service de file d'attente des tâches App Engine. Dans le cadre de cette interface, elle permet de gérer les files d'attente, y compris via la console ou la commande gcloud
. Les files d'attente
créés par l'API Cloud Tasks sont accessibles à partir du SDK App Engine, et vice-versa
versa. Pour maintenir la compatibilité, il est possible d'utiliser le fichier de configuration utilisé par le SDK App Engine, queue.yaml
, pour créer et configurer des files d'attente à utiliser via l'API Cloud Tasks. Cependant, combiner les configurations
via un fichier avec une configuration via l'API Cloud Tasks peut avoir des conséquences inattendues.
Pièges liés au mélange de queue.yaml
avec les méthodes de gestion des files d'attente Cloud Tasks
Pour le service sous-jacent, les fichiers queue.yaml
sont définitifs. L'importation d'un queue.yaml
qui omet les files d'attente existantes dans votre projet, quelle que soit la façon dont elles ont été créées, entraîne la désactivation ou la mise en pause de ces files d'attente. Ainsi, si vous utilisez l'API Cloud Tasks pour appeler CreateQueue
ou UpdateQueue
, puis importez un fichier queue.yaml
qui les omet, les files d'attente créées dans les appels Cloud Tasks sont désactivées.
Imaginez le scénario suivant :
- Appelez
CreateQueue
pour créer une file d'attente nommée "cloud-tasks-queue". Importez un fichier
queue.yaml
contenant les éléments suivants :queue: - name: queue-yaml-queue
Quel est l'état actuel des files d'attente dans ce projet ? L'état de la file d'attente nommée "cloud-tasks-queue" et de toutes les autres files d'attente qui existaient auparavant est défini sur DISABLED
. L'état de la file d'attente "queue-yaml-queue" est défini sur RUNNING
.
Ce comportement peut être surprenant si vous créez des files d'attente via l'API Cloud Tasks. Les instructions ci-dessous expliquent comment réactiver une file d'attente désactivée.
De même, si une file d'attente est désactivée dans l'API Cloud Tasks, mais s'affiche ultérieurement dans un fichier queue.yaml
importé, elle est réactivée.
Si une file d'attente est supprimée avec la méthode DeleteQueue
et s'affiche ultérieurement dans un fichier queue.yaml
, l'importation de queue.yaml
peut échouer, car les noms de file d'attente ne peuvent pas être réutilisés pendant plusieurs jours après la suppression.
Bonnes pratiques
Si vous débutez dans Cloud Tasks ou App Engine, utilisez l'API Cloud Tasks exclusivement pour gérer vos files d'attente, et évitez d'utiliser queue.yaml
. Les méthodes de gestion de files d'attente Cloud Tasks offrent aux utilisateurs plus de choix pour la création, la mise à jour et la suppression de files d'attente.
Toutefois, si vous savez utiliser queue.yaml
, vous ne devriez envisager de passer aux méthodes de gestion de files d'attente que si vous comprenez les pièges liés à l'association de queue.yaml
avec les méthodes de gestion des files d'attente Cloud Tasks.
Pour empêcher les utilisateurs de mélanger les méthodes de gestion des tâches, une option consiste à
créer une application Web ou un outil de ligne de commande
que tous les utilisateurs doivent utiliser pour créer, mettre à jour,
et supprimer des files d'attente. Que cet outil utilise les méthodes de gestion des files d'attente Cloud Tasks ou le fichier queue.yaml
est un détail de la mise en œuvre de l'outil dont les utilisateurs n'ont pas à se préoccuper. Si les utilisateurs doivent utiliser l'outil,
vous pouvez alors garantir qu'il n'y a pas de mélange involontaire
Méthodes de gestion des files d'attente Cloud Tasks et queue.yaml
utilisés
Pour faciliter l'utilisation d'un tel outil, vous pouvez lui attribuer des rôles d'administrateur de file d'attente.
et obliger les utilisateurs à s'authentifier
pour utiliser l'outil. Pour en savoir plus sur la gestion des accès, consultez la section Configurer une file d'attente sécurisée.
Débogage
Vous pouvez consulter les journaux d'audit de l'activité d'administration du projet pour récupérer l'historique des modifications apportées à la configuration des files d'attente, y compris les créations, les mises à jour et les suppressions des files d'attente :
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Par exemple, si une file d'attente existante est désactivée par une importation de queue.yaml
, le message "File d'attente désactivée '[QUEUE_NAME]'" s'affiche dans le journal d'audit via la méthode com.google.appengine.legacy.queue_updated
.
Réactiver une file d'attente désactivée par l'importation d'un fichier queue.yaml
Si vous associez les méthodes de gestion des files d'attente via le fichier queue.yaml
et via l'API Cloud Tasks, l'importation d'un fichier queue.yaml
risque de désactiver accidentellement une file d'attente créée via l'API Cloud Tasks.
Pour réactiver la file d'attente, vous pouvez soit appeler ResumeQueue
dans la file d'attente, soit l'ajouter à queue.yaml
, puis l'importer. Sachez que si vous avez défini un taux de traitement personnalisé (rate
) dans la configuration queue.yaml
de la file d'attente, l'appel ResumeQueue
rétablit la valeur rate
par défaut de la file d'attente. Cela se reflète dans le champ maxDispatchesPerSecond
de la réponse à ResumeQueue
.
Quotas
Si vous utilisez queue.yaml
pour créer vos files d'attente, vous pouvez créer par défaut un maximum de 100 files d'attente. Les files d'attente créées à l'aide de l'API Cloud Tasks ont une limite maximale de 1 000 files d'attente par défaut. Comme dans d'autres cas, l'association des méthodes queue.yaml
et de l'API Cloud Tasks peut produire des résultats inattendus. Par exemple, supposons que vous créiez des files d'attente à l'aide de queue.yaml
, puis que vous obteniez une augmentation de quota, par exemple de 2 000. Si vous utilisez ensuite la méthode de l'API Cloud Tasks pour créer des files d'attente supplémentaires, vous obtiendrez des erreurs de quota. Pour y remédier,
envoyez une demande en cliquant sur Modifier les quotas sur la page "Quotas" de
la console Google Cloud.
Autres informations sur les méthodes de gestion de files d'attente Cloud Tasks
Configuration des files d'attente et délai de démarrage des files d'attente
L'application des modifications apportées à la configuration des files d'attente peut prendre plusieurs minutes. Par exemple, après avoir appelé CreateQueue
ou UpdateQueue
, plusieurs minutes peuvent s'écouler avant que vous puissiez appeler CreateTask
sur cette file d'attente.
Cloud Tasks et la file d'attente App Engine default
La file d'attente App Engine nommée "default" fait l'objet d'un traitement spécial dans le SDK App Engine et dans l'API Cloud Tasks.
Si la file d'attente default
n'existe pas déjà, elle est créée dans les cas suivants :
- Lorsqu'une tâche est ajoutée pour la première fois à la file d'attente
default
à l'aide du SDK App Engine. - Lorsqu'un fichier
queue.yaml
qui spécifie une file d'attentedefault
est importé. - Lorsque
CreateQueue
ouUpdateQueue
est appelé pour créer la file d'attentedefault
.
Pour préserver la compatibilité avec App Engine, Cloud Tasks applique les restrictions suivantes :
- Si une file d'attente nommée "default" est créée, il doit s'agir d'une file d'attente utilisant des tâches App Engine.
- Une fois la file d'attente
default
créée, les utilisateurs ne peuvent pas la supprimer.
Dans l'API Cloud Tasks, les éléments suivants s'appliquent également à la file d'attente default
:
- L'API Cloud Tasks ne crée pas automatiquement la file d'attente
default
ni aucune autre file d'attente. - Comme c'est le cas avec toute autre file d'attente, si vous appelez
GetQueue
sur la file d'attentedefault
, une erreur de type "Introuvable" est générée si l'appel est effectué avant la création de la file d'attente. - De même, la file d'attente
default
ne s'affiche pas dans le résultat deListQueues
avant sa création. - La configuration de la file d'attente
default
peut être modifiée à l'aide de l'appelUpdateQueue
.
Étape suivante
- Consultez les méthodes disponibles dans l'API RPC Cloud Tasks dans la documentation de référence.
- Consultez les méthodes disponibles dans l'API REST Cloud Tasks dans la documentation de référence.
- En savoir plus sur
queue.yaml