我在django項目中使用Celery,我的經紀人是RabbitMQ,我想檢索隊列的長度。我瀏覽了芹菜的代碼,但沒有找到這樣的工具。我發現這個問題在stackoverflow(Check RabbitMQ queue size from client),但我覺得不滿意。用芹菜(RabbitMQ,Django)檢索隊列長度
一切都設置在芹菜,所以應該有某種魔術方法來檢索我想要的,而不指定通道/連接。
有沒有人有關於這個問題的任何想法?
謝謝!
我在django項目中使用Celery,我的經紀人是RabbitMQ,我想檢索隊列的長度。我瀏覽了芹菜的代碼,但沒有找到這樣的工具。我發現這個問題在stackoverflow(Check RabbitMQ queue size from client),但我覺得不滿意。用芹菜(RabbitMQ,Django)檢索隊列長度
一切都設置在芹菜,所以應該有某種魔術方法來檢索我想要的,而不指定通道/連接。
有沒有人有關於這個問題的任何想法?
謝謝!
您可以使用inspect
模塊檢查芹菜工人。這是guide。
也爲RabbitMQ
有一些command line command。
PyRabbit可能是您在尋找的,它是RabbitMQ管理接口API的Python接口。它將允許您查詢隊列及其當前消息計數。
下面是關於如何閱讀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
因此沒有辦法通過芹菜? –
@FrederickNord,不是我所知道的。我的理解是,工人(芹菜)只關心它目前的任務,或者至多是它預先抓取的任務(來自RabbitMQ)。它不知道RabbitMQ中是什麼,故意如此。 –
感謝您的回答表明。但我不需要命令,我需要python類或方法。此外,檢查方法將檢查工人,而不是隊列,我是對的嗎? – user2619608
'檢查**'不能**檢索待處理隊列的長度,據我所知。可能是'檢查預約',但在我的經驗中,它並沒有太大的幫助。 – maxkoryukov