使用 RabbitMQ — Python 文档
使用 RabbitMQ
安装和配置
RabbitMQ 是默认代理,因此除了您要使用的代理实例的 URL 位置之外,它不需要任何额外的依赖项或初始配置:
broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'
有关代理 URL 的描述以及 Celery 可用的各种代理配置选项的完整列表,请参阅 代理设置 ,请参阅下文以设置用户名、密码和虚拟主机。
安装RabbitMQ服务器
请参阅 RabbitMQ 网站上的 安装 RabbitMQ。 对于 macOS,请参阅 在 macOS 上安装 RabbitMQ 。
笔记
如果您在安装和使用 rabbitmqctl 后遇到 nodedown 错误,那么这篇博文可以帮助您确定问题的根源:
设置RabbitMQ
要使用 Celery,我们需要创建一个 RabbitMQ 用户,一个虚拟主机并允许该用户访问该虚拟主机:
$ sudo rabbitmqctl add_user myuser mypassword
$ sudo rabbitmqctl add_vhost myvhost
$ sudo rabbitmqctl set_user_tags myuser mytag
$ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
将上述 myuser
、mypassword
和 myvhost
替换为适当的值。
有关 访问控制 的更多信息,请参阅 RabbitMQ 管理指南 。
在 macOS 上安装 RabbitMQ
在 macOS 上安装 RabbitMQ 的最简单方法是使用 Homebrew 新的闪亮的 macOS 包管理系统。
首先,使用 Homebrew 文档 提供的单行命令安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
最后,我们可以使用 brew 安装 RabbitMQ:
$ brew install rabbitmq
使用 brew 安装 RabbitMQ 后,您需要将以下内容添加到您的路径中,以便能够启动和停止代理:将其添加到您的 shell 的启动文件中(例如,.bash_profile
或 .profile
)。
PATH=$PATH:/usr/local/sbin
配置系统主机名
如果您使用的 DHCP 服务器为您提供随机主机名,则需要永久配置主机名。 这是因为 RabbitMQ 使用主机名与节点通信。
使用 scutil 命令永久设置您的主机名:
$ sudo scutil --set HostName myhost.local
然后将该主机名添加到 /etc/hosts
以便可以将其解析回 IP 地址:
127.0.0.1 localhost myhost myhost.local
如果您启动 rabbitmq-server,您的兔子节点现在应该是 rabbit@myhost,如 rabbitmqctl 所验证:
$ sudo rabbitmqctl status
Status of node rabbit@myhost ...
[{running_applications,[{rabbit,"RabbitMQ","1.7.1"},
{mnesia,"MNESIA CXC 138 12","4.4.12"},
{os_mon,"CPO CXC 138 46","2.2.4"},
{sasl,"SASL CXC 138 11","2.1.8"},
{stdlib,"ERTS CXC 138 10","1.16.4"},
{kernel,"ERTS CXC 138 10","2.13.4"}]},
{nodes,[rabbit@myhost]},
{running_nodes,[rabbit@myhost]}]
...done.
如果您的 DHCP 服务器为您提供一个以 IP 地址开头的主机名,这一点尤其重要(例如,23.10.112.31.comcast.net)。 在这种情况下,RabbitMQ 将尝试使用 rabbit@23:非法主机名。
启动/停止 RabbitMQ 服务器
启动服务器:
$ sudo rabbitmq-server
您还可以通过添加 -detached
选项在后台运行它(注意:只有一个破折号):
$ sudo rabbitmq-server -detached
永远不要使用 kill (kill(1)) 来停止 RabbitMQ 服务器,而是使用 rabbitmqctl 命令:
$ sudo rabbitmqctl stop
当服务器运行时,可以继续阅读【X53X】设置RabbitMQ【X76X】。