2013-07-25 83 views
7

我在django項目中使用Celery,我的經紀人是RabbitMQ,我想檢索隊列的長度。我瀏覽了芹菜的代碼,但沒有找到這樣的工具。我發現這個問題在stackoverflow(Check RabbitMQ queue size from client),但我覺得不滿意。用芹菜(RabbitMQ,Django)檢索隊列長度

一切都設置在芹菜,所以應該有某種魔術方法來檢索我想要的,而不指定通道/連接。

有沒有人有關於這個問題的任何想法?

謝謝!

回答

0

您可以使用inspect模塊檢查芹菜工人。這是guide

也爲RabbitMQ有一些command line command

+1

感謝您的回答表明。但我不需要命令,我需要python類或方法。此外,檢查方法將檢查工人,而不是隊列,我是對的嗎? – user2619608

+0

'檢查**'不能**檢索待處理隊列的長度,據我所知。可能是'檢查預約',但在我的經驗中,它並沒有太大的幫助。 – maxkoryukov

2

PyRabbit可能是您在尋找的,它是RabbitMQ管理接口API的Python接口。它將允許您查詢隊列及其當前消息計數。

2

下面是關於如何閱讀RabbitMQ的隊列長度對於給定的隊列中的例子:

def get_rabbitmq_queue_length(q): 
    from pyrabbit.api import Client 
    from pyrabbit.http import HTTPError 

    count = 0 

    try: 
     cl = Client('localhost:15672', 'guest', 'guest') 
     if cl.is_alive(): 
      count = cl.get_queue_depth('/', q) 
    except HTTPError as e: 
     print "Exception: Could not establish to rabbitmq http api: " + str(e) + " Check for port, proxy, username/pass configuration errors" 
     raise 

    return count 

這是使用pyrabbit如以前Philip

+0

因此沒有辦法通過芹菜? –

+0

@FrederickNord,不是我所知道的。我的理解是,工人(芹菜)只關心它目前的任務,或者至多是它預先抓取的任務(來自RabbitMQ)。它不知道RabbitMQ中是什麼,故意如此。 –