芹菜 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