сельдерей получить количество задач - PullRequest
5 голосов
/ 26 сентября 2011

Я использую питон сельдерей + rabbitmq. Я не могу найти способ подсчета заданий в какой-то очереди. Примерно так:

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

Возможно ли получить количество задач из определенной очереди?

Одним из решений является запуск внешней команды из моего скрипта python:

"rabbitmqctl list_queues -p my_vhost"

и анализ результатов, это хороший способ сделать это?

1 Ответ

5 голосов
/ 14 ноября 2011

Я полагаю, что использование команды 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, поэтому я не знаю о правильности решения.

...