Descripción general de lista de tareas en cola

Esta página describe las listas de tareas en cola: qué son, cuándo se usan y cómo. Las listas de tareas en cola permiten que las aplicaciones realicen trabajos llamados tareas de forma asíncrona sin necesidad de una solicitud de usuario. Si una app necesita ejecutar trabajos en segundo plano, agrega tareas a las listas de tareas en cola. Los servicios de trabajadores ejecutan estas tareas más tarde.

El servicio de lista de tareas en cola está diseñado para el trabajo asíncrono. No ofrece garantías sólidas sobre el tiempo de entrega de la tarea y, por lo tanto, no es adecuado para aplicaciones interactivas en las que un usuario espera el resultado.

Listas de aplicaciones en cola y listas de extracción

Las listas de tareas en cola vienen en dos formatos: listas de aplicaciones en cola y listas de extracción. La manera en que el servicio de Lista de tareas en cola despacha las solicitudes de tareas para los servicios de trabajadores es diferente según el tipo de cola.

Las listas de aplicaciones en cola ejecutan tareas mediante la entrega de solicitudes HTTP a los servicios trabajadores de App Engine. Despachan estas solicitudes a una velocidad constante y confiable, y garantizan una ejecución de tareas correcta. La posibilidad de controlar la velocidad a la que se envían las tareas desde la cola te permite controlar el comportamiento de escalamiento de los trabajadores y, por lo tanto, tus costos.

Debido a que las tareas se ejecutan como solicitudes dirigidas a los servicios de App Engine, están sujetas a plazos estrictos. Las tareas administradas por servicios de ajuste de escala automático deben finalizar en diez minutos. Las tareas administradas por servicios de escalamiento básico y manual pueden ejecutarse durante un máximo de 24 horas.

Las listas de extracción nunca despachan tareas. Dependen de otros servicios de trabajador para "arrendar" tareas de la cola por iniciativa propia. Las listas de extracción te ofrecen más poder y flexibilidad sobre cuándo y dónde se procesan las tareas, pero también requieren más administración de procesos de tu parte. Cuando una tarea es arrendada, el trabajador encargado declara una fecha límite. Antes de que llegue la fecha límite, el trabajador debe completar la tarea y borrarla o el servicio de Lista de tareas en cola permitirá que otro trabajador la arriende.

Todas las tareas de la lista de tareas en cola se realizan de forma asíncrona. La aplicación que crea la tarea la entrega a la cola. La aplicación que origina no recibe notificación sobre si la tarea se completó o no o si fue exitosa.

Si un trabajador no puede procesar una tarea, el servicio de la lista de tareas en cola proporciona un mecanismo de reintento para la cola, por lo que puedes reintentar la tarea una cantidad determinada de veces.

Casos de uso

Lista de aplicaciones en cola

Un caso práctico típico de la lista de aplicaciones en cola es una operación "lenta". Considera un sistema de mensajería de red social. Cada vez que un usuario envía un mensaje, la red necesita actualizar los seguidores del remitente. Esta operación puede demorar mucho tiempo. Con una lista de aplicaciones en cola, la aplicación puede poner en cola una tarea por mensaje, por orden de llegada, para despacharla a un servicio trabajador que se encargue del procesamiento. Cuando el trabajador recibe la solicitud de la tarea, puede recuperar la lista de seguidores del remitente y actualizar la base de datos para cada uno. El trabajador puede ser aún más eficiente cuando se pone otra tarea en cola para cada actualización de la base de datos.

Otro uso para las listas de aplicaciones en cola es el de tareas programadas. Imagina una aplicación que implementa una campaña de anuncios. Se puede agregar un grupo de tareas escritas para enviar correos electrónicos a una lista de aplicaciones en cola con instrucciones de retener las tareas hasta un momento determinado en el futuro. Cuando llegue la fecha límite, el servicio de Lista de tareas en cola comenzará a emitir solicitudes para ejecutar las tareas.

Listas de extracción

Las listas de extracción funcionan bien cuando es necesario agrupar las tareas para una ejecución eficiente. Una solución aprovecha la capacidad de adjuntar una etiqueta a una tarea de extracción. Los trabajadores pueden arrendar un grupo de tareas que tienen la misma etiqueta. Un ejemplo típico podría ser una aplicación que mantiene tablas de clasificación para varios juegos diferentes, con muchos jugadores y grupos que juegan de manera constante. Cuando hay una puntuación alta nueva, la aplicación puede poner en cola una tarea de extracción con la puntuación y el jugador, y usar el ID del juego como una etiqueta de tarea. Un trabajador "se despierta" periódicamente, arrienda un grupo de tareas con el mismo ID de juego y actualiza la tabla de clasificación. Puedes arrendar tareas de manera explícita con un valor de etiqueta específico o dejar que el servicio decida qué grupo de tareas etiquetadas de forma similar enviará.

La creación de lotes con etiquetas puede ser muy útil. La posibilidad de generar etiquetas de manera dinámica mientras tu app se ejecuta permite que un trabajador administre nuevos ID de juegos sin esfuerzos especiales.

¿Qué sigue?