Utiliser les files d'attente de retrait en Go
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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'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 :
- Vous créez une file d'attente de retrait à l'aide de
queue.yaml
.
- Vous créez des tâches et les ajoutez à la file d'attente.
- Le nœud de calcul que vous avez créé loue la tâche à l'aide de
TaskQueue.
- App Engine envoie les données des tâches au nœud de calcul dans la réponse du bail.
- 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.
- Une fois qu'une tâche a bien été traitée, le nœud de calcul la supprime.
Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003ePull queues in the App Engine standard environment require worker services to actively request tasks, in contrast to push queues where tasks are automatically delivered.\u003c/p\u003e\n"],["\u003cp\u003eWorkers in pull queues operate on tasks with a lease, a designated period of exclusive access, after which the task can be processed by another worker if not completed.\u003c/p\u003e\n"],["\u003cp\u003ePull queues enable task batching through the use of tags, allowing workers to retrieve multiple related tasks simultaneously.\u003c/p\u003e\n"],["\u003cp\u003eUnlike push queues, pull queue implementations necessitate manual scaling of workers and explicit task deletion by the worker service after completion to avoid resource waste or errors.\u003c/p\u003e\n"],["\u003cp\u003eThe workflow for pull queues involves creating a queue via \u003ccode\u003equeue.yaml\u003c/code\u003e, adding tasks, leasing tasks to a worker, processing, potentially modifying the lease duration, and finally, deleting the completed task.\u003c/p\u003e\n"]]],[],null,["# Using Pull Queues in Go\n\nThis page provides an overview of pull queues in the App Engine\nstandard environment.\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| go\n| /services/access). If you are updating to the App Engine Go 1.12+ runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/go-differences) to learn about your migration options for legacy bundled services.\n\nIn *push* queues tasks are delivered to a worker service\nbased on the queue's configuration. In *pull* queues the worker service must *ask*\nthe queue for tasks. The queue responds by allowing that worker unique access\nto process the task for a specified period of time, which is called a *lease*.\n\nUsing pull queues, you can also group related tasks using tags and then configure your\nworker to pull multiple tasks with a certain tag all at once. This process is\ncalled *batching*.\n\nIf a worker cannot process a task before its lease expires, it can either renew the\nlease or let it expire, at which point another worker can acquire it. Once the\nwork associated with a task is complete, the worker must delete it.\n\nUsing pull queues requires your code to handle some functions that are automated\nin push queues:\n\nScaling your workers\n: Your code needs to scale the number of workers based on\n processing volume. If your code does not handle scaling, you risk\n wasting computing resources if there are no tasks to process; you also risk\n latency if you have too many tasks to process.\n\nDeleting the tasks\n: Your code also needs to explicitly delete tasks after processing.\n In push queues, App Engine deletes the tasks for you. If your worker does\n not delete pull queue tasks after processing, another worker will re-process\n the task. This wastes computing resources and risks errors if tasks are\n not [idempotent](https://wikipedia.org/wiki/Idempotence).\n\nPull queues in the App Engine standard environment are created by setting a property in a\nconfiguration file called `queue.yaml`.\n\nPull queue workflow\n-------------------\n\nWorkers that process tasks from pull queues must be defined within a service that runs\nin the App Engine standard environment.\n\nThe workflow is as follows:\n\n1. You [create a pull queue](/appengine/docs/legacy/standard/go111/taskqueue/pull/creating-pull-queues), using `queue.yaml`.\n2. You [create tasks](/appengine/docs/legacy/standard/go111/taskqueue/pull/creating-tasks) and add them to the queue.\n3. The worker you have created [leases the task](/appengine/docs/legacy/standard/go111/taskqueue/pull/leasing-pull-tasks), using [TaskQueue.](/appengine/docs/legacy/standard/go111/taskqueue/reference)\n4. App Engine sends task data to the worker in the lease response.\n5. The worker processes the task. If the task fails to execute before the lease expires, the worker can modify the lease duration. If the lease expires, the task will be available to be leased to another worker.\n6. After a task is processed successfully, the [worker deletes it](/appengine/docs/legacy/standard/go111/taskqueue/pull/leasing-pull-tasks#deleting-tasks).\n\nWhat's next\n-----------\n\n- Learn how to [create pull queues](/appengine/docs/legacy/standard/go111/taskqueue/pull/creating-pull-queues)."]]