Utiliser des files d'attente de retrait en Python 2

Cette page est une présentation des files d'attente de retrait de l'environnement standard App Engine.

Dans les files d'attente d'envoi, les tâches sont distribuées à un service de nœuds de calcul en fonction de la configuration de la file d'attente. Dans les files d'attente de retrait, le service de nœuds de calcul doit demander des tâches à la file d'attente. La file d'attente répond en accordant un accès unique à ce nœud de calcul pour traiter la tâche pendant une période spécifiée, appelée bail.

L'application décharge la tâche dans le service de file d'attente de tâches, puis le nœud de calcul la loue à partir du service de file d'attente de tâches

À l'aide des files d'attente de retrait, vous pouvez également regrouper des tâches associées à l'aide de tags, puis configurer votre nœud de calcul pour extraire simultanément plusieurs tâches portant un tag donné. Ce processus est appelé traitement par lots.

Si un nœud de calcul ne peut pas traiter une tâche avant l'expiration de son bail, il peut soit renouveler le bail, soit le laisser expirer. Un autre nœud de calcul peut alors l'acquérir. Une fois le travail associé à une tâche terminé, le nœud de calcul doit supprimer la tâche.

L'utilisation de files d'attente de retrait nécessite que votre code gère certaines fonctions automatisées dans les files d'attente d'envoi :

Scaling de vos nœuds de calcul
Votre code doit ajuster le nombre de nœuds de calcul en fonction du volume de traitement. Si votre code ne gère pas le scaling, vous risquez de gaspiller des ressources informatiques en l'absence de tâches à traiter. Vous risquez également de provoquer des problèmes de latence si vous avez trop de tâches à traiter.
Suppression des tâches
Votre code doit également supprimer explicitement les tâches après le traitement. Dans les files d'attente d'envoi, App Engine supprime les tâches pour vous. Si votre nœud de calcul ne supprime pas les tâches de la file d'attente de retrait après le traitement, un autre nœud de calcul traitera à nouveau la tâche. Cela gaspille des ressources informatiques et risque d'entraîner des erreurs si les tâches ne sont pas idempotentes.

Les files d'attente de retrait de l'environnement standard App Engine sont créées en définissant une propriété dans un fichier de configuration appelé queue.yaml.

Workflow de file d'attente de retrait

Les nœuds de calcul qui traitent des tâches à partir de files d'attente de retrait doivent être définis dans un service qui s'exécute dans l'environnement standard App Engine.

Le workflow se déroule comme suit :

  1. Vous créez une file d'attente de retrait à l'aide de queue.yaml.
  2. Vous créez des tâches et les ajoutez à la file d'attente.
  3. Le nœud de calcul que vous avez créé loue la tâche à l'aide de TaskQueue.
  4. App Engine envoie les données des tâches au nœud de calcul dans la réponse du bail.
  5. Le nœud de calcul traite la tâche. Si la tâche n'est pas exécutée avant l'expiration du bail, le nœud de calcul peut modifier la durée du bail. Si le bail expire, la tâche pourra être louée à un autre nœud de calcul.
  6. Une fois qu'une tâche a bien été traitée, le nœud de calcul la supprime.

Étape suivante