Descripción general de la 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 hagan trabajos, llamados tareas, de manera asíncrona fuera de una solicitud del usuario. Si una aplicación necesita ejecutar trabajos en segundo plano, agrega las tareas a las listas de tareas en cola. Los servicios de trabajador ejecutan estas tareas más tarde.

Listas de aplicaciones en cola y listas de extracción

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

Las listas de aplicaciones en cola ejecutan tareas entregando solicitudes HTTP a los servicios de trabajadores de App Engine. Despachan estas solicitudes a una velocidad constante y confiable, y garantizan una ejecución de tareas confiable. 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 escalamiento 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 por 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.

Sugerencia: En algunos casos, Google Cloud Pub/Sub es una buena alternativa a las listas de extracción.

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 de origen no recibe una notificación si la tarea se completa 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, según el orden de llegada, para despacharla a un servicio de trabajadores que se encarga del procesamiento. Cuando el trabajador recibe la solicitud de 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 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 y 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 aplicación se ejecuta permite a un trabajador administrar nuevos ID de juegos sin ningún esfuerzo específico.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java