En esta página se describe qué son las colas de tareas y cuándo y cómo usarlas. Las colas de tareas permiten que las aplicaciones realicen tareas de forma asíncrona al margen de las solicitudes de los usuarios. Si una aplicación necesita ejecutar un trabajo en segundo plano, añade tareas a las colas de tareas. Las tareas se ejecutan más tarde mediante servicios de trabajador.
El servicio de colas de tareas está diseñado para el trabajo asíncrono. No ofrece garantías sólidas sobre los tiempos de entrega de las tareas, por lo que no es adecuada para aplicaciones interactivas en las que los usuarios esperan el resultado.
Colas de salida y colas para tareas extraídas
Las colas de tareas se dividen en dos tipos: push y pull. La forma en que el servicio de colas de tareas envía solicitudes de tareas a los servicios de trabajador varía en función de la cola.
Las colas de inserción ejecutan tareas mediante solicitudes HTTP a los servicios de trabajador de App Engine. Envían estas solicitudes a un ritmo fiable y constante, y garantizan la ejecución fiable de las tareas. Como puedes controlar la velocidad a la que se envían las tareas desde la cola, puedes controlar el comportamiento de escalado de los trabajadores y, por lo tanto, los costes.
Como las tareas se ejecutan como solicitudes dirigidas a servicios de App Engine, están sujetas a plazos estrictos. Las tareas gestionadas por los servicios de escalado automático deben finalizar en diez minutos. Las tareas gestionadas por servicios de escalado básico y manual pueden ejecutarse durante un máximo de 24 horas.
Las colas de extracción no se admiten en PHP 5.
Todas las tareas de la cola de tareas se realizan de forma asíncrona. La aplicación que crea la tarea la transfiere a la cola. La aplicación de origen no recibe ninguna notificación sobre si la tarea se completa o no, ni sobre si se ha realizado correctamente.
Si un trabajador no puede procesar una tarea, el servicio de colas de tareas proporciona a la cola un mecanismo de reintento para que la tarea se pueda volver a intentar un número finito de veces.
Casos prácticos
Colas de salida
Un caso práctico habitual de las colas de inserción es una operación "lenta". Imagina un sistema de mensajería de una red social. Cada vez que un usuario envía un mensaje, la red debe actualizar los seguidores del remitente. Esta operación puede llevar mucho tiempo. Con una cola push, la aplicación puede poner en cola una tarea por cada mensaje que llegue para enviarlo a un servicio de trabajador para que lo procese. Cuando el trabajador recibe la solicitud de tarea, puede obtener la lista de seguidores del remitente y actualizar la base de datos de cada uno de ellos. El trabajador puede ser aún más eficiente si pone en cola otra tarea push para cada actualización de la base de datos.
Otro uso de las colas de inserción son las tareas programadas. Imagina una aplicación que implementa una campaña publicitaria. Se puede añadir un grupo de tareas escritas para enviar correos a una cola de inserción con instrucciones para retener las tareas hasta una hora específica en el futuro. Cuando llegue la fecha de vencimiento, el servicio de cola de tareas empezará a enviar solicitudes para ejecutar las tareas.
Siguientes pasos
- Consulta información sobre las colas de inserción.