芹菜 RabbitMQ 与主管

Celery 需要经纪人来处理消息传递。我们使用 RabbitMQ,因为它易于设置并且得到很好的支持。

使用以下命令安装 rabbitmq

sudo apt-get install rabbitmq-server

安装完成后,创建用户,添加虚拟主机并设置权限。

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 ".*" ".*" ".*"

要启动服务器:

sudo rabbitmq-server

我们可以用 pip 安装芹菜:

pip install celery

在你的 Django settings.py 文件中,你的代理 URL 看起来就像

BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'

现在开始芹菜工人

celery -A your_app worker -l info

此命令启动 Celery 工作程序以运行 django 应用程序中定义的任何任务。

Supervisor 是一个 Python 程序,允许你控制并继续运行任何 unix 进程。它还可以重新启动崩溃的进程。我们用它来确保芹菜工人一直在运行。

首先,安装主管

sudo apt-get install supervisor

在 supervisor conf.d(/etc/supervisor/conf.d/your_proj.conf)中创建 your_proj.conf 文件:

[program:your_proj_celery]
command=/home/your_user/your_proj/.venv/bin/celery --app=your_proj.celery:app worker -l info
directory=/home/your_user/your_proj
numprocs=1
stdout_logfile=/home/your_user/your_proj/logs/celery-worker.log
stderr_logfile=/home/your_user/your_proj/logs/low-worker.log
autostart=true
autorestart=true
startsecs=10

创建并保存配置文件后,我们可以通过 supervisorctl 命令通知 Supervisor 我们的新程序。首先,我们告诉 Supervisor 在/etc/supervisor/conf.d 目录中查找任何新的或更改的程序配置:

sudo supervisorctl reread

随后告诉它制定任何变更:

sudo supervisorctl update

一旦我们的程序运行,毫无疑问我们想要停止,重新启动或查看其状态。

sudo supervisorctl status

要重新启动你的芹菜实例:

sudo supervisorctl restart your_proj_celery