2011-09-26 17 views
5

Estoy usando python apio + rabbitmq. No puedo encontrar la manera de hacer que la tarea cuente en alguna cola. algo como esto:apio get tasks count

celery.queue('myqueue').count() 

¿Es Posible para obtener tareas de recuento de la cola certaint?

Una solución es ejecutar comandos externos de mi scrpit pitón:

"rabbitmqctl list_queues -p my_vhost" 

y analizar los resultados, si es buena manera de hacer esto?

+0

Eche un vistazo en [aquí] (http://celery.readthedocs.org/en/latest/userguide/monitoring.html#inspecting-queues). – hymloth

+0

, actualizo la pregunta. – Evg

+0

Por supuesto que está bien ejecutar comandos externos para obtener información disponible en otro lugar ... – hymloth

Respuesta

5

Supongo que usar el comando rabbitmqctl no es una buena solución, especialmente en mi servidor ubuntu, donde rabbitmqctl solo se puede ejecutar con privilegios de administrador.

Al jugar con objetos pika He encontrado la solución de trabajo:

import pika 
from django.conf import settings 

def tasks_count(queue_name): 
    ''' Connects to message queue using django settings and returns count of messages in queue with name queue_name. ''' 
    credentials = pika.PlainCredentials(settings.BROKER_USER, settings.BROKER_PASSWORD) 
    parameters = pika.ConnectionParameters(credentials=credentials, 
              host=settings.BROKER_HOST, 
              port=settings.BROKER_PORT, 
              virtual_host=settings.BROKER_VHOST) 
    connection = pika.BlockingConnection(parameters=parameters) 
    channel = connection.channel() 
    queue = channel.queue_declare(queue=queue_name, durable=True) 
    message_count = queue.method.message_count 
    return message_count 

no he encontrado documentación acerca de la inspección de la cola AMQP con pika, por lo que no saben de corrección de solución.