Lorsque des tâches sont dans une file d'attente, un nœud de calcul peut les louer. Une fois les tâches traitées, le nœud de calcul doit les supprimer.
Avant de commencer
- Créez une file d'attente de retrait.
- Créez des tâches et ajoutez-les à la file d'attente de retrait.
Contexte important
- Cette méthode est uniquement applicable aux nœuds de calcul qui s'exécutent au sein d'un service dans l'environnement standard.
- Lorsque vous utilisez des files d'attente de retrait, vous êtes responsable du scaling de vos nœuds de calcul en fonction de votre volume de traitement.
Louer des tâches
Lorsque les tâches sont dans une file d'attente, un nœud de calcul peut en louer une ou plusieurs avec la méthode taskqueue.Lease
. Il peut y avoir un léger délai avant que les tâches récemment ajoutées à l'aide de taskqueue.Add
ne soient disponibles via taskqueue.Lease
.
Pour effectuer une demande de bail, vous devez spécifier le nombre de tâches à louer (1 000 tâches maximum) et la durée du bail en secondes (maximum une semaine). La durée du bail doit être suffisamment longue pour que la tâche la plus lente puisse se terminer. Vous pouvez modifier la durée de bail d'une tâche à l'aide de taskqueue.ModifyLease
.
Louer une tâche empêche qu'elle soit traitée par un autre processus, et cette tâche reste indisponible jusqu'à la fin du bail.
L'exemple de code suivant alloue 100 tâches de la file d'attente pull-queue
pendant une heure :
Traitement par lots avec des tags de tâches
Toutes les tâches ne se ressemblent pas ; votre code peut ajouter des "tags" aux tâches, puis choisir des tâches à louer par tag. Le tag agit comme un filtre. L'exemple de code suivant montre comment donner des tags à des tâches puis comment louer les tâches en fonction de ces tags :
Réguler les interrogations
Les nœuds de calcul qui interrogent la file d'attente pour les tâches à louer doivent détecter s'ils essaient de louer des tâches plus rapidement que la file ne peut les fournir. Si cet échec se produit, une erreur d'attente sera renvoyée par taskqueue.Lease
.
Votre code doit traiter ces erreurs, arrêter d'appeler taskqueue.Lease
, puis réessayer plus tard. Pour éviter ce problème, vous pouvez définir un délai RPC plus long lorsque vous appelez taskqueue.Lease
. Vous devez également arrêter temporairement les appels lorsqu'une demande de bail renvoie une liste de tâches vide.
Si vous générez plus de 10 demandes de bail de tâches par file d'attente et par seconde, seules les 10 premières demandes renverront des résultats. Si le nombre de requêtes dépasse cette limite, OK
est renvoyé sans résultat.
Surveiller des tâches dans la console Google Cloud
Pour afficher des informations sur toutes les tâches et les files d’attente de votre application :
Ouvrez la page Cloud Tasks dans la console Google Cloud et recherchez la valeur Pull dans la colonne Type.
Cliquez sur le nom de la file qui vous intéresse et ouvrez la page des détails de la file. Toutes les tâches de la file d'attente sélectionnée sont affichées.
Supprimer des tâches
Une fois qu'un nœud de calcul a terminé une tâche, il doit la supprimer de la file d'attente. Si vous voyez des tâches restant dans une file d'attente après qu'un nœud de calcul a fini de les traiter, il est probable que ce dernier a échoué. Dans ce cas, les tâches seront traitées par un autre nœud de calcul.
Vous pouvez supprimer une liste de tâches, telle que celle renvoyée par taskqueue.Lease
, en la transmettant à taskqueue.DeleteMulti
: