Como usar filas pull do Go
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Nesta página, você encontra uma visão geral das filas pull no ambiente padrão do App Engine.
Nas filas push, as tarefas são entregues para o serviço do worker com base na configuração da fila. Nas filas pull, o serviço do worker precisa solicitar tarefas à fila. A fila responde permitindo que esse worker tenha acesso exclusivo para processar a tarefa por um período específico. Isso é chamado de lease.

Além disso, com as filas pull, é possível agrupar tarefas relacionadas usando tags e, em seguida, configurar o worker para extrair várias tarefas com uma determinada tag de uma só vez. Isso é chamado de processamento em lotes.
Se um worker não processar uma tarefa a tempo, ele poderá renovar a alocação ou deixá-la expirar para que outro worker a adquira. Após a conclusão do trabalho associado a uma tarefa, o worker precisa excluí-la.
As filas exigem que o código lide com algumas funções que são automatizadas nas filas push:
- Escalonamento de workers
- O código precisa escalonar o número de workers com base no volume de processamento. Caso o código não faça o escalonamento, há a possibilidade de perder recursos de computação se não houver tarefas a serem processadas. Se houver muitas tarefas, haverá o risco de latência.
- Exclusão de tarefas
- O código também precisa excluir explicitamente as tarefas após o processamento.
Em filas push, o App Engine exclui as tarefas por você. No entanto, se o worker não excluir tarefas da fila pull após o processamento, outro worker processará novamente a tarefa. Isso desperdiça recursos de computação e apresenta risco de erros quando as tarefas não são idempotentes.
No ambiente padrão do App Engine, as filas pull são criadas com a definição de uma propriedade em um arquivo de configuração chamado queue.yaml
.
Fluxo de trabalho da fila pull
Os workers que processam tarefas de filas pull precisam ser definidos em um serviço que seja executado no ambiente padrão do App Engine.
O fluxo de trabalho é o seguinte:
- Crie uma fila pull usando
queue.yaml
.
- Crie tarefas e as adiciona à fila.
- O worker criado coloca a tarefa em lease usando o
TaskQueue.
- O App Engine envia os dados da tarefa ao trabalhador na resposta da alocação.
- O worker processa a tarefa. Se a tarefa não for executada antes do término da alocação, o worker poderá modificar a duração da alocação. Se a alocação expirar, a tarefa estará disponível para ser alocada a outro worker.
- Quando a tarefa for processada, o worker a excluirá.
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-08-19 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-19 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)."]]