Una vez que las tareas están en una lista de extracción, un trabajador puede arrendarlas. Después de procesar las tareas, el trabajador debe borrarlas.
Antes de comenzar
- Crea una lista de extracción.
- Crea tareas y agrégalas a la lista de extracción.
Contexto importante
- Este método solo se aplica a trabajadores que se ejecutan dentro de un servicio del entorno estándar.
- Cuando utilizas las listas de extracción, tienes la responsabilidad de escalar los trabajadores según el volumen de procesamiento.
Arrendamiento de tareas
Una vez que las tareas se encuentran en la cola, un trabajador puede solicitar la asignación de una o más tareas con el método taskqueue.Lease
. Puede haber una breve demora antes de que las tareas agregadas recientemente con taskqueue.Add
estén disponibles a través de taskqueue.Lease
.
Cuando solicitas un arrendamiento, especificas la cantidad de tareas a arrendar (hasta un máximo de 1,000) y la duración del arrendamiento en segundos (hasta un máximo de una semana). El arrendamiento debe durar lo suficiente para garantizar que la tarea más lenta tenga tiempo de completarse antes de que se venza el período de arrendamiento. Puedes modificar la solicitud de asignación de tareas con taskqueue.ModifyLease
.
Cuando se asigna una tarea, esta no está disponible para que la procese otro trabajador, y no lo estará hasta que venza la tarea.
El siguiente ejemplo de código arrienda 100 tareas de la lista pull-queue
durante una hora:
Agrupación en lotes con etiquetas de tareas
No todas las tareas son iguales. Tu código puede "etiquetar" tareas y después elegir qué tareas solicitar según la etiqueta. La etiqueta actúa como un filtro. El siguiente ejemplo de código demuestra cómo etiquetar tareas y luego arrendar según las etiquetas:
Regulación de los índices de consulta
Los trabajadores que consultan la lista en busca de tareas para arrendar deben detectar si intentan arrendar las tareas más rápido de lo que la cola puede proporcionarlas. Si esto ocurre, se mostrará un error de tiempo de espera en taskqueue.Lease
.
Tu código debe detectar estos errores, retirar la llamada a taskqueue.Lease
y volver a intentarlo más tarde. Para evitar este problema, considera establecer un plazo mayor de RPC cuando llames a taskqueue.Lease
. También debes retirarte cuando una solicitud de asignación muestra una lista vacía de tareas.
Si generas más de 10 solicitudes LeaseTasks por lista por segundo, solo las primeras 10 solicitudes mostrarán resultados. Si las solicitudes superan este límite, se muestra OK
sin resultados.
Cómo supervisar tareas en GCP Console
Para ver información sobre todas las tareas y las listas en tu aplicación, realiza los siguientes pasos:
Abre la página Listas de tareas en cola en GCP Console y selecciona la pestaña Listas de extracción en la barra de menú, que se encuentra en la parte superior de la página.
Haz clic en el nombre de la lista que te interesa y abre la página de detalles de la lista. Se muestran todas las tareas en la lista seleccionada.
Cómo borrar tareas
Una vez que un trabajador completa una tarea, debe borrarla de la lista. Si ves que las tareas permanecen en una cola después de que el trabajador termina de procesarlas, es probable que haya fallado; en ese caso, otro trabajador procesará las tareas.
Para borrar una lista de tareas, como la que muestra taskqueue.Lease
, pásala a taskqueue.DeleteMulti
: