2011-09-26 18 views
5

Sto usando python sedano + conigliomq. Non riesco a trovare un modo per ottenere il conteggio delle attività in qualche coda. Qualche cosa come questa:sedano conteggio delle attività

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

È posible per ottenere contare compiti dalla coda certaint?

Una soluzione è quella di eseguire il comando esterno dal mio pitone scrpit:

"rabbitmqctl list_queues -p my_vhost" 

e analizzare i risultati, è buon modo per fare questo?

+0

Dai un'occhiata a [qui] (http://celery.readthedocs.org/en/latest/userguide/monitoring.html#inspecting-queues). – hymloth

+0

aggiorno la domanda. – Evg

+0

Ovviamente è possibile eseguire comandi esterni per ottenere alcune informazioni disponibili altrove ... – hymloth

risposta

5

Suppongo che l'utilizzo del comando rabbitmqctl non sia una buona soluzione, specialmente sul mio server ubuntu, dove rabbitmqctl può essere eseguito solo con i privilegi di root.

Giocando con oggetti Pika ho trovato la soluzione di lavoro:

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 

non ho trovato documentazione su ispezione della coda di AMQP con Pika, quindi non so circa la correttezza della soluzione.

Problemi correlati