Использование RabbitMQ¶
Установка и конфигурация¶
RabbitMQ является брокером по умолчанию, поэтому он не требует никаких дополнительных зависимостей или начальной конфигурации, кроме URL-адреса экземпляра брокера, который вы хотите использовать:
broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'
Описание URL-адресов брокера и полный список различных опций конфигурации брокера, доступных Celery, смотрите в Настройки брокера, а о настройке имени пользователя, пароля и vhost смотрите ниже.
Установка сервера RabbitMQ¶
Смотрите Installing RabbitMQ на сайте RabbitMQ. Для macOS смотрите Installing RabbitMQ on macOS.
Примечание
Если вы получаете ошибки nodedown после установки и использования rabbitmqctl, то эта статья в блоге поможет вам определить источник проблемы:
Настройка 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
выше.
Более подробную информацию о Admin Guide RabbitMQ см. в access control.
Установка RabbitMQ на macOS¶
Самый простой способ установить RabbitMQ на macOS - использовать Homebrew новую и блестящую систему управления пакетами для macOS.
Сначала установите Homebrew с помощью однострочной команды Homebrew documentation:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Наконец, мы можем установить RabbitMQ, используя brew:
$ brew install rabbitmq
После установки RabbitMQ с помощью brew вам нужно добавить следующее в ваш путь, чтобы иметь возможность запускать и останавливать брокер: добавьте его в файл запуска для вашей оболочки (например, .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 теперь должен быть 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
Когда сервер запущен, вы можете продолжить чтение Setting up RabbitMQ.