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