supervisord實例配置

在supervisord初體驗篇我們已經把supervisord搭建起來了,也瞭解了一些基本的使用方法
supervisord初體驗傳送門

下面我們就開始配置一個實際使用的實例程序


supervisord常用的一些參數配置

參數 作用 示例
process_name 程序的名字 testSupervisord
user 程序啓動的用戶,默認是root root
directory 程序啓動的目錄 /home/leon/projects/usercenter
command 程序啓動的命令 python3 test.py
startsecs 啓動 5 秒後沒有異常退出,就當作已經正常啓動了 5
startretries 啓動失敗時候重試次數,默認3次 3
autorestart 程序異常退出後自動重啓 true
autostart 在supervisord啓動的時候一起啓動 true
redirect_stderr 把 stderr 重定向到 stdout,默認 false true
stdout_logfile_maxbytes stdout 日誌文件大小,默認 50MB 50MB
stdout_logfile_backups stdout 日誌文件備份數,默認10 2
stderr_logfile 錯誤日誌輸出路徑 /var/log/supervisor/progress.err.log
stdout_logfile 正常日誌輸出路徑 /var/log/supervisor/progress.out.log
numprocs 啓動的守護進程數量 3
priority 守護進程的優先級 999
umask 進程的權限 002
environment 添加環境變量 environment=PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3

注意!


1. 當你的numprocs大於1時
process_name表達式要寫成:%(program_name)s_%(process_num)02d

2. Python環境設置

python的import機制,python中的模塊site負責模塊導入路徑的添加(Append module search paths for third-party packages to sys.path)查看其main方法,其中有一個addusersitepackages的動作,是導入當前用戶的module search paths。進一步查看源碼,是通過get_config_var('userbase')獲取~/.local(sysconfig.py line 205),而~代表就是環境變量當前用戶。
所以我們可以通過添加HOME環境變量來讓python正確的找到模塊導入路徑。
使用supervisor出現ModuleNotFoundError錯誤時是因爲sys.path未加載所需模塊所在的路徑,可以通過設置environment來指明所需模塊的路徑。

使用PYTHONPATH指明:
environment=PYTHONPATH=/home/user/.local/lib/python3.6/site-packages
對於指定用戶安裝的python模塊(pip install XXX --user 安裝用戶),也可以通過指定HOME來讓python找到模塊所在的路徑:
environment=HOME=/home/user

實例


下面是官方給出的一個實例

[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO

參考文獻:
supervisord官方手冊:http://supervisord.org/index.html
supervisor環境變量:https://blog.csdn.net/hunter_yang_Tuziki/article/details/86675121

發佈了40 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章