Я полагаю, что использование команды rabbitmqctl не является хорошим решением, особенно на моем сервере Ubuntu, где rabbitmqctl может выполняться только с правами суперпользователя.
Играя с объектами pika, я нашел рабочее решение:
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 с помощью pika, поэтому я не знаю о правильности решения.