Retrieve queue length with Celery (RabbitMQ, Django)
celery, django, django-celery, queue, rabbitmq
Solution
Here is an example on how to read the queue length in rabbitMQ for a given queue:
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
This is using pyrabbit as previously suggested by Philip
Problem
I'm using Celery in a django project, my broker is RabbitMQ, and I want to retrieve the length of the queues. I went through the code of Celery but did not find the tool to do that. I found this issue on stackoverflow (Check RabbitMQ queue size from client), but I don't find it satisfying. Everything is setup in celery, so there should be some kind of magic method to retrieve what I want, without specifying a channel / connection. Does anyone have any idea about this question ? Thanks !