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