Usar colas para tareas extraídas en Python 2

En esta página se ofrece una descripción general de las colas de extracción en el entorno estándar de App Engine.

En las colas push, las tareas se envían a un servicio de trabajador en función de la configuración de la cola. En las colas extraídas, el servicio de trabajador debe solicitar tareas a la cola. La cola responde permitiendo que ese trabajador tenga acceso único para procesar la tarea durante un periodo específico, que se denomina concesión.

La aplicación delega la tarea al servicio de colas de tareas y, a continuación, el trabajador la toma prestada del servicio de colas de tareas.

Con las colas de extracción, también puedes agrupar tareas relacionadas mediante etiquetas y, a continuación, configurar tu trabajador para que extraiga varias tareas con una etiqueta determinada a la vez. Este proceso se denomina agrupación por lotes.

Si un trabajador no puede procesar una tarea antes de que caduque su concesión, puede renovarla o dejar que caduque, momento en el que otro trabajador puede adquirirla. Una vez que el trabajador haya completado el trabajo asociado a una tarea, debe eliminarla.

Para usar colas de extracción, tu código debe gestionar algunas funciones que se automatizan en las colas de inserción:

Escalar tus trabajadores
Tu código debe escalar el número de trabajadores en función del volumen de procesamiento. Si tu código no gestiona el escalado, corres el riesgo de desperdiciar recursos informáticos si no hay tareas que procesar, así como de sufrir latencia si tienes demasiadas tareas que procesar.
Eliminar las tareas
Tu código también debe eliminar explícitamente las tareas después de procesarlas. En las colas de salida, App Engine elimina las tareas de forma automática. Si tu trabajador no elimina las tareas de la cola de extracción después de procesarlas, otro trabajador volverá a procesar la tarea. Esto desperdicia recursos informáticos y conlleva el riesgo de que se produzcan errores si las tareas no son idempotentes.

Las colas de extracción del entorno estándar de App Engine se crean definiendo una propiedad en un archivo de configuración llamado queue.yaml.

Flujo de trabajo de colas para tareas extraídas

Los trabajadores que procesan tareas de colas de extracción deben definirse en un servicio que se ejecute en el entorno estándar de App Engine.

El flujo de trabajo es el siguiente:

  1. Crea una cola para tareas extraídas con queue.yaml.
  2. Crea tareas y las añade a la cola.
  3. El trabajador que has creado arrenda la tarea mediante TaskQueue.
  4. App Engine envía los datos de la tarea al trabajador en la respuesta de la concesión.
  5. El trabajador procesa la tarea. Si la tarea no se ejecuta antes de que caduque el arrendamiento, el trabajador puede modificar la duración del arrendamiento. Si la concesión caduca, la tarea estará disponible para que otro trabajador la pueda obtener.
  6. Una vez que se ha procesado una tarea correctamente, el trabajador la elimina.

Siguientes pasos