2010-07-31 17 views
9

Estoy ejecutando Django con Aplery en la parte superior de RabbitMQ como una cola para manejar algunas tareas de procesamiento de datos. Estoy iniciando tareas de apio cuando un usuario se registra por primera vez, así como periódicamente para actualizar sus datos. Sin embargo, me gustaría, por supuesto, dar prioridad a las tareas que ejecutan los usuarios que están actualmente en línea. Noté que había una prioridad para las tareas en el apio, pero parece que rabbitmq no es compatible con esto. Este hilo http://groups.google.com/group/celery-users/browse_thread/thread/ac3b6123d63421e5/b7740def1389e87e?lnk=gst&q=priority#b7740def1389e87e sugiere tener dos colas diferentes, una de alta prioridad y otra de baja prioridad, o establecer un límite de velocidad para las tareas de menor prioridad.¿Solución para la prioridad de la tarea de apio en RabbitMQ?

¿Alguien tiene una buena solución para implementar la prioridad? ¡Gracias por adelantado!

Respuesta

2

Aparte de esto, se puede empujar a tareas urgentes hacer cola (supongamos que es una cola urgente) y establecer las prioridades del consumidor, es decir, dejar que todos los consumidores recojan la tarea de la cola urgente con alta prioridad.

https://github.com/celery/celery/issues/3098

Al final del consumidor, se puede definir argumento x prioridad en las colas para consumir a partir. En el siguiente ejemplo, los consumidores recoge tareas de la cola de apio con prioridad 0 y desde hipri con prioridad 10.

Ejemplo:

CELERY_QUEUES = (
    Queue('celery', Exchange('celery', type='direct'), routing_key='celery', 
      consumer_arguments={'x-priority': 0}), 
    Queue('hipri', Exchange('hipri', type='direct'), routing_key='hipri', 
      consumer_arguments={'x-priority': 10}), 
) 
Cuestiones relacionadas