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 no despacho 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 prácticos
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.
¿Qué sigue?
- Leer acerca de las listas de aplicaciones en cola