Usa listas de extracción en Go
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Esta página proporciona una descripción general de las listas de extracción en el entorno estándar de App Engine.
En las listas de aplicaciones en cola, las tareas se entregan a un servicio trabajador a partir de la configuración de la cola. En las listas de extracción, el servicio de trabajador debe pedirle tareas a la lista. Como respuesta, la lista le brinda acceso único a ese trabajador para que procese la tarea durante un período específico, que se denomina asignación de tiempo.

Con listas de extracción, también puedes agrupar las tareas mediante etiquetas y configurar el trabajador para que extraiga varias tareas a la vez con una misma etiqueta. Este proceso se denomina agrupación en lotes.
Si un trabajador no puede procesar una tarea antes de que venza la asignación, puede renovarla o dejar que venza, momento a partir del cual otro trabajador puede adquirirla. Una vez que se completó el trabajo asociado con una tarea, el trabajador debe borrarlo.
El uso de listas de extracción requiere que tu código controle algunas funciones que están automatizadas en las listas de aplicaciones en cola:
- Cómo escalar los trabajadores
- Tu código necesita escalar la cantidad de trabajadores según el volumen de procesamiento. Si tu código no admite el escalamiento, corres el riesgo de desperdiciar recursos de procesamiento si no hay tareas que procesar. Por otra parte, también existe un riesgo de latencia si tienes demasiadas tareas que procesar.
- Cómo borrar las tareas
- Tu código también debe borrar las tareas de forma explícita luego del procesamiento.
En las listas de aplicaciones en cola, App Engine borra las tareas por ti. Si tu trabajador no borra las tareas de la lista de extracción luego del procesamiento, otro trabajador volverá a procesar la tarea. Esto desperdicia recursos de procesamiento y representa un riesgo de error si las tareas no son idempotentes.
Las listas de extracción en el entorno estándar de App Engine se crean mediante la configuración de una propiedad en un archivo de configuración llamado queue.yaml
.
Flujo de trabajo de la lista de extracción
Los trabajadores que procesan tareas de las listas de extracción deben definirse dentro de un servicio que se ejecuta en el entorno estándar de App Engine.
El flujo de trabajo es el siguiente:
- Para crear una lista de extracción, debes usar
queue.yaml
.
- Creas tareas y las agregas a la lista.
- El trabajador que creaste asigna tiempo a la tarea mediante TaskQueue.
- App Engine envía los datos de la tarea al trabajador en la respuesta de asignación.
- El trabajador procesa la tarea. Si la tarea no se ejecuta antes de que venza la asignación, puede modificar su duración. Si vence la asignación, la tarea estará disponible para que se asigne a otro trabajador.
- Luego de que la tarea se procese con éxito, el trabajador la borra.
Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-04 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)."]]