2011-09-17 18 views
8

Estoy intentando implementar una situación siguiente con Celery: dos colas de (mismas) tareas de larga ejecución, una para "normal" y la otro para la prioridad "inactiva".Implementación de colas de prioridad "inactivas" y "normales" para tareas de larga ejecución en Apio

Haría que los trabajadores supervisen ambas colas y tomen tareas de la cola de prioridad "normal" primero y, si está vacía, tomaría tareas de la prioridad "inactiva".

Mi pregunta es: ¿es posible garantizar el orden en que los trabajadores verificarán sus colas de tareas? Además, ¿es este el enfoque correcto para implementar las prioridades?

Antecedentes: las tareas ejecutan trabajos de transcodificación ffmpeg. Las prioridades "normales" serían la incorporación de nuevos videos (que deben transcodificarse lo antes posible) y la prioridad "inactiva" sería la tarea de volver a transcodificar el archivo antiguo (más de 40.000 videos) a la configuración de formato actualizada. No tengo varios servidores disponibles para el despacho de tareas multiservidor.

Respuesta

1

Según la teoría de que los trabajadores ociosos no consumen muchos recursos del sistema, he implementado dos prioridades con un segundo intercambio, un segundo conjunto de colas y un segundo conjunto de trabajadores. No tengo procesos de trabajo tan intensivos, así que no hago que mi segundo grupo de trabajadores se acelere cuando el primer conjunto está activo, pero es posible que el comando Renice de UNIX funcione para esto.

Probablemente también podría hacer algo con una cola de control para que no sea suficiente que los trabajadores reciban una solicitud de trabajo, también necesitan obtener un token de una cola de control. Luego escupirás un pequeño número de tokens a la cola de control inactiva pero un número mayor de tokens a la cola de control normal.

Cuestiones relacionadas