python測試開發django之使用supervisord 後臺啟動celery 服務(worker/beat)

前言

Supervisor(‘http://supervisord.org/’)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。
它可以很方便的監聽、啟動、停止、重啟一個或多個進程。
用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。

環境準備

centos 安裝 supervisord

yum install -y supervisord

debian 安裝 supervisord

apt-get install -y supervisor

supervisord.conf

安裝完成後在/etc/supervisor 目錄下會有個配置文件 supervisord.conf

# cd /etc/supervisor
/etc/supervisor# ls
conf.d	supervisord.conf

cat 查看內容

# cat supervisord.conf 
; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

在項目中我們需要用到此配置,可以在項目根目錄導出一份

echo_supervisord_conf > ./supervisord.conf

文件內容編寫

supervisord.conf文件內容編寫, 前面內容不用改,直接接著在後面寫
比如我需要後臺啟動celery的worker和beat服務

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html

; 前面文檔省略,不用刪,接著後面寫

[program:celery-worker]
command=celery -A hrun2_web worker -l info ; 管理命令,supervisor不支持後臺進程
process_name=%(program_name)s
#user=root                                 ;進程啟動用戶
autostart=true                           ;是否隨supervisor啟動
autorestart=true                         ;是否在掛瞭之後重啟,意外關閉後會重啟,比如kill掉!
startretries=3                           ;啟動嘗試次數
stderr_logfile=./celery_worker.log           ;標準輸出文件
stdout_logfile=./celery_worker.log        ;標準輸出文件
loglevel=info                            ;日志的級別


[program:celery-beat]
command=celery -A hrun2_web beat ; 管理命令,supervisor不支持後臺進程
process_name=%(program_name)s
#user=root                                 ;進程啟動用戶
autostart=true                           ;是否隨supervisor啟動
autorestart=true                         ;是否在掛瞭之後重啟,意外關閉後會重啟,比如kill掉!
startretries=3                           ;啟動嘗試次數
stderr_logfile=./celery_beat.log          ;標準輸出文件
stdout_logfile=./celery_beat.log        ;標準輸出文件
loglevel=info                            ;日志的級別

啟動服務

啟動服務

supervisord -c /path/supervisord.conf

關閉服務

supervisorctl shutdown

運行過程,啟動沒問題,不顯示任何內容,如果需要關閉用shutdown

root@13107c465557:/code# supervisord -c ./supervisord.conf
root@13107c465557:/code# supervisorctl shutdown
Shut down

查看啟動的服務

supervisorctl status

執行結果如下

root@13107c465557:/code# supervisorctl status
celery-worker RUNNING pid 234, uptime 0:00:14
celery-beat RUNNING pid 235, uptime 0:00:14

說明啟動瞭celery和celery-beat兩個服務

查看日志

我們在配置裡面指定瞭./celery_worker.log 文件保存運行日志,所以可以直接查看這個文件

tail -f celery_worker.log -n 30

運行就可以看到worker運行的日志瞭

參考教程 https://www.jb51.net/article/146238.htm

到此這篇關於python測試開發django之使用supervisord後臺啟動celery服務(worker/beat)的文章就介紹到這瞭,更多相關supervisord後臺啟動celery服務內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: