supervisor
https://blog.csdn.net/u011132987/article/details/103716093
1. 安裝
pip install supervisor
2. supervior配置
echo_supervisord_conf > /tmp/supervisord.conf
sudo mv /tmp/supervisord.conf /etc
sudo mkdir /etc/supervisord
# 追加配置 /etc/.conf
[include]
files = /etc/supervisord/*.ini
生成應用配置文件
[program:celery_beat]
;指定運行目錄
directory=/opt/code_ops/webroot
;運行目錄下執(zhí)行命令
command= /opt/code_ops/py3venv/bin/python3.6 /opt/code_ops/webroot/manage.py celery beat
;進程數(shù)
numprocs=1
;當supervisor啟動時,程序將會自動啟動
autostart=true
;自動重啟
autorestart=true
; 啟動失敗時的最多重試次數(shù)
startretries=3
; 重定向stderr到stdout
redirect_stderr=true
; 在操作系統(tǒng)給supervisord發(fā)送SIGCHILD信號時等待的時間
stopwaitsecs=10
;設置為true课舍,則在給程序發(fā)送SIGKILL信號的時候,會發(fā)送到整個進程組蜈彼,它的子進程也會受到影響
killasgroup=true
; 輸出日志
stdout_logfile=/tmp/celery_beat_out.log
;默認最大50M
stdout_logfile_maxbytes=10MB
;日志文件備份數(shù)媒吗,默認為10
stdout_logfile_backups=10
;錯誤日志
;true表示禁止監(jiān)聽錯誤
redirect_stderr=false
stderr_logfile=/tmp/celery_beat_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=3
[program:celery.work]
;指定運行目錄
directory=/opt/code_ops/webroot
;運行目錄下執(zhí)行命令
command=/opt/code_ops/py3venv/bin/python3.6 /opt/code_ops/webroot/manage.py celery -A xy_m worker --loglevel=info
;進程數(shù)
numprocs=1
;當supervisor啟動時,程序將會自動啟動
autostart=true
;自動重啟
autorestart=true
; 啟動失敗時的最多重試次數(shù)
startretries=3
; 重定向stderr到stdout
redirect_stderr=true
; 在操作系統(tǒng)給supervisord發(fā)送SIGCHILD信號時等待的時間
stopwaitsecs=10
;設置為true罢维,則在給程序發(fā)送SIGKILL信號的時候,會發(fā)送到整個進程組,它的子進程也會受到影響
killasgroup=true
;輸出日志
stdout_logfile=/tmp/celery_work_out.log
;默認最大50M
stdout_logfile_maxbytes=10MB
;日志文件備份數(shù)卿操,默認為10
stdout_logfile_backups=10
redirect_stderr=false
stderr_logfile=/tmp/celery_work_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=3
[program:celery.flow]
;指定運行目錄
directory=/opt/code_ops/webroot
;運行目錄下執(zhí)行命令
command=/opt/code_ops/py3venv/bin/python3.6 /opt/code_ops/webroot/manage.py celery flower --address=0.0.0.0 --port=9991 --broker=redis://127.0.0.1:6379/8
;進程數(shù)
numprocs=1
;當supervisor啟動時,程序將會自動啟動
autostart=true
;自動重啟
autorestart=true
; 啟動失敗時的最多重試次數(shù)
startretries=3
; 重定向stderr到stdout
redirect_stderr=true
; 在操作系統(tǒng)給supervisord發(fā)送SIGCHILD信號時等待的時間
stopwaitsecs=10
;設置為true,則在給程序發(fā)送SIGKILL信號的時候孙援,會發(fā)送到整個進程組害淤,它的子進程也會受到影響
killasgroup=true
;輸出日志
stdout_logfile=/tmp/celery_flow_out.log
;默認最大50M
stdout_logfile_maxbytes=10MB
;日志文件備份數(shù),默認為10
stdout_logfile_backups=10
redirect_stderr=false
stderr_logfile=/tmp/celery_flow_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=3
常用命令
# 啟動
supervisord -c /etc/supervisord.conf
(py3venv) [ops@pythonfat023198 supervisord]$ supervisorctl status
celery.flow RUNNING pid 28475, uptime 0:09:25
celery.work RUNNING pid 28476, uptime 0:09:25
celery_beat RUNNING pid 28477, uptime 0:09:25
# 關閉supervisord需要通過supervisor的控制器
(py3venv) [ops@pythonfat023198 supervisord]$ supervisorctl -c /etc/supervisord.conf shutdown
Shut down
(py3venv) [ops@pythonfat023198 supervisord]$ supervisorctl status
(py3venv) [ops@pythonfat023198 supervisord]$ ps -ef |grep super
root 27120 26569 0 20:31 pts/7 00:00:00 vim supervisord.service
ops 29277 23874 0 20:55 pts/6 00:00:00 grep --color=auto super
# 重啟supervisord也是通過supervisor的控制器
supervisorctl -c /etc/supervisord.conf reload
查看日志
(py3venv) [ops@pythonfat023198 supervisord]$ supervisorctl status
celery.flow RUNNING pid 29367, uptime 0:01:45
celery.work RUNNING pid 29368, uptime 0:01:45
celery_beat RUNNING pid 29369, uptime 0:01:45
(py3venv) [ops@pythonfat023198 supervisord]$ supervisorctl tail celery.work
-------------- celery@pythonfat023198 v3.1.26.post2 (Cipater)
---- **** -----
--- * *** * -- Linux-3.10.0-693.el7.x86_64-x86_64-with-centos-7.4.1708-Core
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: xy_m:0x7f14e3ec4f60
- ** ---------- .> transport: redis://127.0.0.1:6379/8
- ** ---------- .> results: redis://localhost:6379/9
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=celery(direct) key=celery
[tasks]
. apps.ops_nginx.tasks.add
. ldap_sync.tasks.syncldap
. xy_m.celery.debug_task
-------------- celery@pythonfat023198 v3.1.26.post2 (Cipater)
---- **** -----
--- * *** * -- Linux-3.10.0-693.el7.x86_64-x86_64-with-centos-7.4.1708-Core
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: xy_m:0x7f8ee177ef60
- ** ---------- .> transport: redis://127.0.0.1:6379/8
- ** ---------- .> results: redis://localhost:6379/9
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=celery(direct) key=celery
[tasks]
. apps.ops_nginx.tasks.add
. ldap_sync.tasks.syncldap
. xy_m.celery.debug_task