2011-09-26 53 views
5

我正在使用python芹菜+ rabbitmq。我找不到在某個隊列中獲取任務數量的方法。 有些事情是這樣的:芹菜得到任務計數

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

它是更多鈔票來獲得任務從certaint隊列計數?

一種解決方案是從我的蟒蛇scrpit運行外部命令:

"rabbitmqctl list_queues -p my_vhost" 

和分析的結果,是它這樣做的好方法?

+0

請看[這裏](http://celery.readthedocs.org/en/latest/userguide/monitoring.html#inspecting-queues)。 – hymloth

+0

我更新了問題。 – Evg

+0

當然可以運行外部命令來獲取其他地方的某些信息...... – hymloth

回答

5

我想使用rabbitmqctl命令不是很好的解決方案,特別是在我的ubuntu服務器上,其中rabbitmqctl只能以root權限執行。

通過與鼠對象打我找到工作的解決方案:

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 

我沒有找到關於檢查AMQP隊列鼠兔的文檔,所以我不知道解決方案的正確性。