我如何使用Python代码以编程方式列出RabbitMQ代理上创建的当前队列以及连接到它们的工作者的数量?
rabbitmqctl list_queues name consumers
to94eoyn1#
我这样做,并在网页上显示所有队列及其详细信息(消息就绪、未确认等)-
import kombu conn = kombu.Connection(broker_url)# example 'amqp://guest:guest@localhost:5672/' conn.connect() client = conn.get_manager() queues = client.get_queues('/')#assuming vhost as '/'
你需要安装kombu,队列是一个字典,其中的键代表队列名称。我想我是在挖掘celery 花(用于监控celery 的工具)的代码时得到的。更新:正如@zaq178miami所指出的,你还需要有http API的管理插件。我忘了我在rabbitmq中启用了比。
mu0hgdu02#
这办法对我来说很管用:
def get_queue_info(queue_name): with celery.broker_connection() as conn: with conn.channel() as channel: return channel.queue_declare(queue_name, passive=True)
这将返回一个namedtuple,其中包含该队列的名称、等待的消息数和使用者。ksrini的答案也是正确的,并且可以在需要有关队列的详细信息时使用。感谢Ask Solem给我的提示。
cidc1ykv3#
作为一个rabbitmq客户端,你可以使用pika。但是它没有list_queues选项。最简单的解决方案是使用subprocess从python调用rabbitmqctl命令:
subprocess
import subprocess command = "/usr/local/sbin/rabbitmqctl list_queues name consumers" process = subprocess.Popen(command.split(), stdout=subprocess.PIPE) print process.communicate()
nhaq1z214#
我会简单地使用这个:只需用您的值替换user(默认值= guest)、passwd(默认值= guest)和port即可。
import requests import json def call_rabbitmq_api(host, port, user, passwd): url = 'https://%s:%s/api/queues' % (host, port) r = requests.get(url, auth=(user,passwd),verify=False) return r def get_queue_name(json_list): res = [] for json in json_list: res.append(json["name"]) return res if __name__ == '__main__': host = 'rabbitmq_host' port = 55672 user = 'guest' passwd = 'guest' res = call_rabbitmq_api(host, port, user, passwd) print ("--- dump json ---") print (json.dumps(res.json(), indent=4)) print ("--- get queue name ---") q_name = get_queue_name(res.json()) print (q_name)
从此处引用:https://gist.github.com/hiroakis/5088513#file-example_rabbitmq_api-py-L2
4条答案
按热度按时间to94eoyn1#
我这样做,并在网页上显示所有队列及其详细信息(消息就绪、未确认等)-
你需要安装kombu,队列是一个字典,其中的键代表队列名称。我想我是在挖掘celery 花(用于监控celery 的工具)的代码时得到的。
更新:正如@zaq178miami所指出的,你还需要有http API的管理插件。我忘了我在rabbitmq中启用了比。
mu0hgdu02#
这办法对我来说很管用:
这将返回一个namedtuple,其中包含该队列的名称、等待的消息数和使用者。
ksrini的答案也是正确的,并且可以在需要有关队列的详细信息时使用。
感谢Ask Solem给我的提示。
cidc1ykv3#
作为一个rabbitmq客户端,你可以使用pika。但是它没有list_queues选项。最简单的解决方案是使用
subprocess
从python调用rabbitmqctl命令:nhaq1z214#
我会简单地使用这个:只需用您的值替换user(默认值= guest)、passwd(默认值= guest)和port即可。
从此处引用:https://gist.github.com/hiroakis/5088513#file-example_rabbitmq_api-py-L2