2011-09-26 43 views
5

Tôi đang sử dụng cần tây python + thỏmq. Tôi không thể tìm cách để có được số nhiệm vụ trong một số hàng đợi. Một số điều như sau:cần tây nhận nhiệm vụ đếm

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

Có thể nhận nhiệm vụ được tính từ hàng đợi xác thực không?

Một giải pháp là để chạy lệnh bên ngoài từ scrpit python của tôi:

"rabbitmqctl list_queues -p my_vhost" 

và phân tích kết quả, nó là cách tốt để làm điều này?

+0

Hãy xem [tại đây] (http://celery.readthedocs.org/en/latest/userguide/monitoring.html#inspecting-queues). – hymloth

+0

tôi cập nhật câu hỏi. – Evg

+0

Tất nhiên là ok để chạy các lệnh bên ngoài để có được một số thông tin có sẵn ở nơi khác ... – hymloth

Trả lời

5

Tôi cho rằng việc sử dụng lệnh thỏmqctl không phải là giải pháp tốt, đặc biệt là trên máy chủ ubuntu của tôi, trong đó thỏmqctl chỉ có thể được thực hiện với quyền root.

Bằng cách chơi với các đối tượng pika tôi tìm thấy giải pháp làm việc:

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 

tôi không tìm thấy tài liệu về kiểm tra hàng đợi AMQP với pika, vì vậy tôi không biết về tính đúng đắn của giải pháp.

Các vấn đề liên quan