Evg*_*Evg 5 python rabbitmq celery
我正在使用python芹菜+ rabbitmq.我找不到在某个队列中获取任务计数的方法.有点像这样:
celery.queue('myqueue').count()
Run Code Online (Sandbox Code Playgroud)
从确定队列中获取任务是否可行?
一种解决方案是从我的python scrpit运行外部命令:
"rabbitmqctl list_queues -p my_vhost"
Run Code Online (Sandbox Code Playgroud)
并解析结果,这是一个很好的方法吗?
我想使用rabbitmqctl命令不是一个好的解决方案,特别是在我的ubuntu服务器上,其中rabbitmqctl只能以root权限执行.
通过玩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
Run Code Online (Sandbox Code Playgroud)
我没有找到关于用pika检查AMQP队列的文档,所以我不知道解决方案的正确性.
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |