1. 程式人生 > >supervisor djcelery(django、celery)在linux上的部署

supervisor djcelery(django、celery)在linux上的部署

  • 安裝配置
pip install  supervisor

supervisor不支援python3,所以建立python 2.7的虛擬環境,目前兩個虛擬環境(當前文章虛擬環境採用anaconda):

  1. (envDjango):python=3.6;django=2.1;djcelery
  2. (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