supervisor djcelery(django、celery)在linux上的部署
阿新 • • 發佈:2018-12-07
- 安裝配置
pip install supervisor
supervisor不支援python3,所以建立python 2.7的虛擬環境,目前兩個虛擬環境(當前文章虛擬環境採用anaconda):
- (envDjango):python=3.6;django=2.1;djcelery
- (envSupervisor):python=2.7;supervisor
envDjango環境下djcelery已測試通過,詳情見:
……
在虛擬環境envSupervisor下,執行如下Linux shell命令:
#安裝supervisor
pip install supervisor
#通過echo_supervisord_conf命令得到supervisor配置模板
echo_supervisord_conf > /etc/supervisord.conf
#編輯supervisord.conf,修改最後兩行:
vim supervisord.conf
[include]
files = sv.ini
#建立/etc/sv.ini檔案:
touch /etc/sv.ini
#編輯sv.ini檔案,按下方說明
vim sv.ini
- woker和beat程序配置講解
配置supervisor守護程序來啟動celery,啟動worker與beat程序
worker:執行任務的消費者,通常會在多臺伺服器執行多個消費者來提高執行效率。
beat:任務排程器,Beat程序會讀取配置檔案的內容,週期性地將配置中到期需要執行的任務傳送給任務佇列。 Celerybeat會保持執行, 一旦到了某一定時任務需要執行時, Celerybeat便將其加入到queue中. 不像worker程序, Celerybeat只有需要一個即可.
- 專案配置檔案
sv.ini
[program:celerywork]
#執行目錄下執行命令,將虛擬環境下python全路徑指出
command=/root/anaconda3/envs/envDjango/ bin/python manage.py celery worker -l info
#指定執行目錄
directory=/home/PycharmProjects/DjangoTest
#輸出日誌
stdout_logfile=/home/PycharmProjects/DjangoTest/logs/celery_work.log
stdout_logfile_maxbytes=1MB #預設最大1M
stdout_logfile_backups=10 #日誌檔案備份數,預設為10
#啟動設定
numprocs=1 #程序數
autorestart=true #是否自動重啟
#錯誤日誌
redirect_stderr=true #為true表示禁止監聽錯誤
[program:celerybeat]
command=/root/anaconda3/envs/envDjango/bin/python manage.py celery beat -l info
directory=/home/PycharmProjects/DjangoTest
stdout_logfile=/home/PycharmProjects/DjangoTest/logs/celery_beat.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
autorestart=true
redirect_stderr=true
- 啟動和關閉supervisor
#啟動supervisor輸入如下命令,使用具體的配置檔案執行:
supervisord -c supervisord.conf
#關閉supervisord需要通過supervisor的控制器:
supervisorctl -c supervisord.conf shutdown
#重啟supervisord也是通過supervisor的控制器:
supervisorctl -c supervisord.conf reload
- 安裝時可能遇到的錯誤資訊
發生如下錯誤,是因為supervisor不支援python3,按照上述步驟建立兩個虛擬環境即可。
Error:
(envDjango) [[email protected] logs]# pip install supervisor
Collecting supervisor
Using cached https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz
Complete output from command python setup.py egg_info:
Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:16:44)
[GCC 7.3.0]. Please install using a supported version.
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-9nl5_fmj/supervisor/
參考:
1.伺服器使用Supervisor後臺執行Celery
http://yshblog.com/blog/165
2.利用django admin後臺配置celery定時任務
http://www.mamicode.com/info-detail-1768314.html
3.supervisor的安裝與簡單介紹
(包含詳細的配置檔案講解)
https://www.cnblogs.com/Dicky-Zhang/p/6171954.html