在python3中使用Supervisor的詳細(xì)教程
supervisor介紹
首先,介紹一下supervisor。Supervisor(http://supervisord.org)是用Python開(kāi)發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng)。它可以很方便的監(jiān)聽(tīng)、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程。用Supervisor管理的進(jìn)程,當(dāng)一個(gè)進(jìn)程意外被殺死,supervisort監(jiān)聽(tīng)到進(jìn)程死后,會(huì)自動(dòng)將它重新拉起,很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能,不再需要自己寫(xiě)shell腳本來(lái)控制
環(huán)境:centos7.4
安裝supervisor
pip install supervisor
因?yàn)槭莗ython開(kāi)發(fā)的一個(gè)庫(kù),可以直接用pip來(lái)安裝,很方便。
supervisor安裝完成后會(huì)生成三個(gè)執(zhí)行程序:supervisortd、supervisorctl、echo_supervisord_conf,分別是supervisor的守護(hù)進(jìn)程服務(wù)(用于接收進(jìn)程管理命令)、客戶端(用于和守護(hù)進(jìn)程通信,發(fā)送管理進(jìn)程的指令)、生成初始配置文件程序。
設(shè)置環(huán)境變量
$ vim ~/.bash_profile #在后面補(bǔ)充: PATH=$PATH:$HOME/bin:/usr/local/python/bin $ source ~/.bash_profile
配置supervisor
創(chuàng)建目錄,初始化配置文件
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
主配置文件參數(shù)
[unix_http_server] file=/tmp/supervisor.sock ; UNIX socket 文件,supervisorctl 會(huì)使用 ;chmod=0700 ; socket 文件的 mode,默認(rèn)是 0700 ;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid ;[inet_http_server] ; HTTP 服務(wù)器,提供 web 管理界面 ;port=127.0.0.1:9001 ; Web 管理后臺(tái)運(yùn)行的 IP 和端口,如果開(kāi)放到公網(wǎng),需要注意安全性 ;username=user ; 登錄管理后臺(tái)的用戶名 ;password=123 ; 登錄管理后臺(tái)的密碼 [supervisord] logfile=/tmp/supervisord.log ; 日志文件,默認(rèn)是 $CWD/supervisord.log logfile_maxbytes=50MB ; 日志文件大小,超出會(huì) rotate,默認(rèn) 50MB logfile_backups=10 ; 日志文件保留備份數(shù)量默認(rèn) 10 loglevel=info ; 日志級(jí)別,默認(rèn) info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ; pid 文件 nodaemon=false ; 是否在前臺(tái)啟動(dòng),默認(rèn)是 false,即以 daemon 的方式啟動(dòng) minfds=1024 ; 可以打開(kāi)的文件描述符的最小值,默認(rèn) 1024 minprocs=200 ; 可以打開(kāi)的進(jìn)程數(shù)的最小值,默認(rèn) 200 ; 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:///tmp/supervisor.sock ; 通過(guò) UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致 ;serverurl=http://127.0.0.1:9001 ; 通過(guò) HTTP 的方式連接 supervisord ; 包含其他的配置文件 [include] files = relative/directory/*.ini ; 可以是 *.conf 或 *.ini
管理一個(gè)進(jìn)程
把所有被管理的進(jìn)程配置文件都放在同一個(gè)目錄,主配置文件包含進(jìn)去。
mkdir /etc/supervisor/config.d
vim /etc/supervisor/supervisord.conf [include] files = /etc/supervisor/config.d/*.conf
新建一個(gè)配置文件
[program:sougou] #souogu 為程序的名稱(chēng) command=scrapy crawl sougou #需要執(zhí)行的命令 directory=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders #命令執(zhí)行的目錄 environment=ASPNETCORE__ENVIRONMENT=Production #環(huán)境變量 user=root #用戶 stopsignal=INT autostart=true #是否自啟動(dòng) autorestart=true #是否自動(dòng)重啟 startsecs=3 #自動(dòng)重啟時(shí)間間隔(s) stderr_logfile=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders/ossoffical.err.log #錯(cuò)誤日志文件 stdout_logfile=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders/ossoffical.out.log #輸出日志文件
[program:nginx] command = /usr/local/nginx/sbin/nginx -g 'daemon off;' startsecs = 3 autostart = true autorestart = true user = root stdout_logfile = /etc/supervisor/logs/supervisord-nginx.log stderr_logfile = /etc/supervisor/logs/supervisord-nginx-error.log
剛開(kāi)始有個(gè)坑,command = /usr/local/nginx/sbin/nginx 我是這樣寫(xiě)的 結(jié)果就一直啟動(dòng)nginx 因?yàn)檫@樣的話 是后臺(tái)運(yùn)行的nginx,然而supervisor 不能管理后臺(tái)運(yùn)行進(jìn)程,所以把nginx daemon off 守護(hù)關(guān)掉,就讓他阻塞在前臺(tái)bash運(yùn)行,方便supervisor來(lái)管理。
supervisor配置文件詳解
- command:?jiǎn)?dòng)程序使用的命令,可以是絕對(duì)路徑或者相對(duì)路徑
- process_name:一個(gè)python字符串表達(dá)式,用來(lái)表示supervisor進(jìn)程啟動(dòng)的這個(gè)的名稱(chēng),默認(rèn)值是%(program_name)s
- numprocs:Supervisor啟動(dòng)這個(gè)程序的多個(gè)實(shí)例,如果numprocs>1,則process_name的表達(dá)式必須包含%(process_num)s,默認(rèn)是1
- numprocs_start:一個(gè)int偏移值,當(dāng)啟動(dòng)實(shí)例的時(shí)候用來(lái)計(jì)算numprocs的值
- priority:權(quán)重,可以控制程序啟動(dòng)和關(guān)閉時(shí)的順序,權(quán)重越低:越早啟動(dòng),越晚關(guān)閉。默認(rèn)值是999
- autostart:如果設(shè)置為true,當(dāng)supervisord啟動(dòng)的時(shí)候,進(jìn)程會(huì)自動(dòng)重啟。
- autorestart:值可以是false、true、unexpected。false:進(jìn)程不會(huì)自動(dòng)重啟,unexpected:當(dāng)程序退出時(shí)的退出碼不是exitcodes中定義的時(shí),進(jìn)程會(huì)重啟,true:進(jìn)程會(huì)無(wú)條件重啟當(dāng)退出的時(shí)候。
- startsecs:程序啟動(dòng)后等待多長(zhǎng)時(shí)間后才認(rèn)為程序啟動(dòng)成功
- startretries:supervisord嘗試啟動(dòng)一個(gè)程序時(shí)嘗試的次數(shù)。默認(rèn)是3
- exitcodes:一個(gè)預(yù)期的退出返回碼,默認(rèn)是0,2。
- stopsignal:當(dāng)收到stop請(qǐng)求的時(shí)候,發(fā)送信號(hào)給程序,默認(rèn)是TERM信號(hào),也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。
- stopwaitsecs:在操作系統(tǒng)給supervisord發(fā)送SIGCHILD信號(hào)時(shí)等待的時(shí)間
- stopasgroup:如果設(shè)置為true,則會(huì)使supervisor發(fā)送停止信號(hào)到整個(gè)進(jìn)程組
- killasgroup:如果設(shè)置為true,則在給程序發(fā)送SIGKILL信號(hào)的時(shí)候,會(huì)發(fā)送到整個(gè)進(jìn)程組,它的子進(jìn)程也會(huì)受到影響。
- user:如果supervisord以root運(yùn)行,則會(huì)使用這個(gè)設(shè)置用戶啟動(dòng)子程序
- redirect_stderr:如果設(shè)置為true,進(jìn)程則會(huì)把標(biāo)準(zhǔn)錯(cuò)誤輸出到supervisord后臺(tái)的標(biāo)準(zhǔn)輸出文件描述符。
- stdout_logfile:把進(jìn)程的標(biāo)準(zhǔn)輸出寫(xiě)入文件中,如果stdout_logfile沒(méi)有設(shè)置或者設(shè)置為AUTO,則supervisor會(huì)自動(dòng)選擇一個(gè)文件位置。
- stdout_logfile_maxbytes:標(biāo)準(zhǔn)輸出log文件達(dá)到多少后自動(dòng)進(jìn)行輪轉(zhuǎn),單位是KB、MB、GB。如果設(shè)置為0則表示不限制日志文件大小
- stdout_logfile_backups:標(biāo)準(zhǔn)輸出日志輪轉(zhuǎn)備份的數(shù)量,默認(rèn)是10,如果設(shè)置為0,則不備份
- stdout_capture_maxbytes:當(dāng)進(jìn)程處于stderr capture mode模式的時(shí)候,寫(xiě)入FIFO隊(duì)列的最大bytes值,單位可以是KB、MB、GB
- stdout_events_enabled:如果設(shè)置為true,當(dāng)進(jìn)程在寫(xiě)它的stderr到文件描述符的時(shí)候,PROCESS_LOG_STDERR事件會(huì)被觸發(fā)
- stderr_logfile:把進(jìn)程的錯(cuò)誤日志輸出一個(gè)文件中,除非redirect_stderr參數(shù)被設(shè)置為true
- stderr_logfile_maxbytes:錯(cuò)誤log文件達(dá)到多少后自動(dòng)進(jìn)行輪轉(zhuǎn),單位是KB、MB、GB。如果設(shè)置為0則表示不限制日志文件大小
- stderr_logfile_backups:錯(cuò)誤日志輪轉(zhuǎn)備份的數(shù)量,默認(rèn)是10,如果設(shè)置為0,則不備份
- stderr_capture_maxbytes:當(dāng)進(jìn)程處于stderr capture mode模式的時(shí)候,寫(xiě)入FIFO隊(duì)列的最大bytes值,單位可以是KB、MB、GB
- stderr_events_enabled:如果設(shè)置為true,當(dāng)進(jìn)程在寫(xiě)它的stderr到文件描述符的時(shí)候,PROCESS_LOG_STDERR事件會(huì)被觸發(fā)
- environment:一個(gè)k/v對(duì)的list列表
- directory:supervisord在生成子進(jìn)程的時(shí)候會(huì)切換到該目錄
- umask:設(shè)置進(jìn)程的umask
- serverurl:是否允許子進(jìn)程和內(nèi)部的HTTP服務(wù)通訊,如果設(shè)置為AUTO,supervisor會(huì)自動(dòng)的構(gòu)造一個(gè)url
啟動(dòng)supervisor
supervisord -c /etc/supervisor/supervisord.conf
有時(shí)候kill進(jìn)程之后需要釋放連接
unlink /tmp/supervisor.sock
web界面管理 開(kāi)啟web訪問(wèn)
vi /etc/supervisor/supervisord.conf [inet_http_server] port=0.0.0.0:9001 username=user password=123
此處需要注意將 [inet_http_server] 前邊的注釋也要去掉
supervisorctl的用法
- supervisord : 啟動(dòng)supervisor
- supervisorctl reload :修改完配置文件后重新啟動(dòng)supervisor
- supervisorctl status :查看supervisor監(jiān)管的進(jìn)程狀態(tài)
- supervisorctl start 進(jìn)程名 :?jiǎn)?dòng)XXX進(jìn)程
- supervisorctl stop 進(jìn)程名 :停止XXX進(jìn)程
- supervisorctl stop all:停止全部進(jìn)程,注:start、restart、stop都不會(huì)載入最新的配置文件。
- supervisorctl update:根據(jù)最新的配置文件,啟動(dòng)新配置或有改動(dòng)的進(jìn)程,配置沒(méi)有改動(dòng)的進(jìn)程不會(huì)受影響而重啟
superlance介紹
superlance就是基于supervisor的事件機(jī)制實(shí)現(xiàn)的一系列命令行的工具集,它實(shí)現(xiàn)了許多supervisor本身沒(méi)有實(shí)現(xiàn)的實(shí)用的進(jìn)程監(jiān)控和管理的特性,包括內(nèi)存監(jiān)控,http接口監(jiān)控,郵件和短信通知機(jī)制等。同樣的,superlance本身也是使用python編寫(xiě)的
superlance的組件
superlance是一系列命令行工具的集合,其包括以下這些命令:
- httpok 通過(guò)定時(shí)對(duì)一個(gè)HTTP接口進(jìn)行GET請(qǐng)求,根據(jù)請(qǐng)求是否成功來(lái)判定一個(gè)進(jìn)程是否處于正常狀態(tài),如果不正常則對(duì)進(jìn)程進(jìn)行重啟。
- crashmail 當(dāng)一個(gè)進(jìn)程意外退出時(shí),發(fā)送郵件告警。
- memmon 當(dāng)一個(gè)進(jìn)程的內(nèi)存占用超過(guò)了設(shè)定閾值時(shí),發(fā)送郵件告警。
- crashmailbatch 類(lèi)似于crashmail的告警,但是一段時(shí)間內(nèi)的郵件將會(huì)被合成起來(lái)發(fā)送,以避免郵件轟炸。
- fatalmailbatch 當(dāng)一個(gè)進(jìn)程沒(méi)有成功啟動(dòng)多次后會(huì)進(jìn)入FATAL狀態(tài),此時(shí)發(fā)送郵件告警。與crashmailbatch一樣會(huì)進(jìn)行合成報(bào)警。
- crashsms 當(dāng)一個(gè)進(jìn)程意外退出時(shí)發(fā)送短信告警,這個(gè)短信也是通過(guò)email網(wǎng)關(guān)來(lái)發(fā)送的。
1、當(dāng)supervisord啟動(dòng)的時(shí)候,如果我們的listener配置為autostart=true的話,listener就會(huì)作為supervisor的子進(jìn)程被啟動(dòng)。
2、listener被啟動(dòng)之后,會(huì)向自己的stdout寫(xiě)一個(gè)"READY"的消息,此時(shí)父進(jìn)程也就是supervisord讀取到這條消息后,會(huì)認(rèn)為listener處于就緒狀態(tài)。
3、listener處于就緒狀態(tài)后,當(dāng)supervisord產(chǎn)生的event在listener的配置的可接受的events中時(shí),supervisord就會(huì)把該event發(fā)送給該listener。
4、listener接收到event后,我們就可以根據(jù)event的head,body里面的數(shù)據(jù),做一系列的處理了。我們根據(jù)event的內(nèi)容,判斷,提取,報(bào)警等等操作。
5、該干的活都干完之后,listener需要向自己的stdout寫(xiě)一個(gè)消息"RESULTnOK",supervisord接受到這條消息后。就知道listener處理event完畢了。
Supervisord支持的Event
- PROCESS_STATE 進(jìn)程狀態(tài)發(fā)生改變
- PROCESS_STATE_STARTING
- 進(jìn)程狀態(tài)從其他狀態(tài)轉(zhuǎn)換為正在啟動(dòng)(Supervisord的配置項(xiàng)中有startsecs配置項(xiàng),
- 是指程序啟動(dòng)時(shí)需要程序至少穩(wěn)定運(yùn)行x秒才認(rèn)為程序運(yùn)行正常,在這x秒中程序狀態(tài)為正在啟動(dòng))
- PROCESS_STATE_RUNNING 進(jìn)程狀態(tài)由正在啟動(dòng)轉(zhuǎn)換為正在運(yùn)行
- PROCESS_STATE_BACKOFF 進(jìn)程狀態(tài)由正在啟動(dòng)轉(zhuǎn)換為失敗
- PROCESS_STATE_STOPPING 進(jìn)程狀態(tài)由正在運(yùn)行轉(zhuǎn)換為正在停止
- PROCESS_STATE_EXITED 進(jìn)程狀態(tài)由正在運(yùn)行轉(zhuǎn)換為退出
- PROCESS_STATE_STOPPED進(jìn)程狀態(tài)由正在停止轉(zhuǎn)換為已經(jīng)停止(exited和stopped的區(qū)別是exited是程序自行退出,而stopped為人為控制其退出)
- PROCESS_STATE_FATAL 進(jìn)程狀態(tài)由正在運(yùn)行轉(zhuǎn)換為失敗
- PROCESS_STATE_UNKNOWN 未知的進(jìn)程狀態(tài)
- REMOTE_COMMUNICATION 使用Supervisord的RPC接口與Supervisord進(jìn)行通信
- PROCESS_LOG 進(jìn)程產(chǎn)生日志輸出,包括標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出
- PROCESS_LOG_STDOUT 進(jìn)程產(chǎn)生標(biāo)準(zhǔn)輸出
- PROCESS_LOG_STDERR 進(jìn)程產(chǎn)生標(biāo)準(zhǔn)錯(cuò)誤輸出
- PROCESS_COMMUNICATION 進(jìn)程的日志輸出包含 和
- PROCESS_COMMUNICATION_STDOUT 進(jìn)程的標(biāo)準(zhǔn)輸出包含 和
- PROCESS_COMMUNICATION_STDERR進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤輸出包含 和
- SUPERVISOR_STATE_CHANGE_RUNNING Supervisord 啟動(dòng)
- SUPERVISOR_STATE_CHANGE_STOPPING Supervisord 停止
- TICK_5 每隔5秒觸發(fā)
- TICK_60 每隔60秒觸發(fā)
- TICK_3600 每隔3600觸發(fā)
- PROCESS_GROUP Supervisord的進(jìn)程組發(fā)生變化
- PROCESS_GROUP_ADDED 新增了Supervisord的進(jìn)程組
- PROCESS_GROUP_REMOVED 刪除了Supervisord的進(jìn)程組
安裝superlance
也是python程序,直接pip 安裝
pip install superlance
superlance實(shí)戰(zhàn)
在實(shí)際配置supervisor使用superlance之前,首先要安裝sendmail,superlance使用這個(gè)命令行工具來(lái)發(fā)送email,利用各種包管理工具都可以簡(jiǎn)單的安裝:
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar zxvf sendEmail-v1.56.tar.gz cp sendEmail-v1.56/sendEmail /usr/bin/sendemail
發(fā)郵件測(cè)試一下
sendemail -f 發(fā)件人郵箱 -t 收件人郵箱 -s 發(fā)件人郵箱smtp服務(wù)器 -u "sendEmail" -m "haha" -xu 發(fā)件人郵箱 -xp 發(fā)件人郵箱密碼 -f 發(fā)件人 -t 收件人 -s 發(fā)件人smtp服務(wù)器 -u 主題 -m 內(nèi)容 -xu 發(fā)件人用戶名 -xp 發(fā)件人密碼
現(xiàn)在要做的就是配置一個(gè)supervisor配置文件,來(lái)一直監(jiān)聽(tīng)進(jìn)程的狀態(tài)變化
[eventlistener:crashmail] command=crashmail -a -s "sendemail -f dataalarm@wjoyxt.com -t alarm@wjoyxt.com -s smtp.mxhichina.com -u 'Process is crashed' -xu dataalarm@wjoyxt.com -xp Bigdata@2019@ -m >/dev/null 2>&1" -m alarm@wjoyxt.com events=PROCESS_STATE_EXITED redirect_stderr=false
或
[eventlistener:crashmail] command=crashmail -a -s "mail -s 'Process is crashed' alarm@wjoyxt.com" -m alarm@wjoyxt.com events=PROCESS_STATE_EXITED redirect_stderr=false
command參數(shù)中 -p 參數(shù)配置了crashmail只會(huì)對(duì)名為redis的監(jiān)控項(xiàng)作出響應(yīng),而 -m 參數(shù)中則配置了崩潰郵件會(huì)被發(fā)送到的地址,-a 監(jiān)控所有項(xiàng)
crashmail是一個(gè)主管“事件監(jiān)聽(tīng)器”,用于訂閱PROCESS_STATE_EXITED事件。當(dāng)crashmail 收到該事件并且轉(zhuǎn)換是"意外的(not expected)"時(shí),crashmail 會(huì)將電子郵件通知發(fā)送到已配置的地址
events=PROCESS_STATE_EXITED,PROCESS_STATE_STOPPED,PROCESS_STATE_FATAL,PROCESS_LOG_STDERR 多個(gè)事件時(shí),用逗號(hào)隔開(kāi)
PROCESS_STATE_EXITED是在一個(gè)supervisor的監(jiān)控項(xiàng)對(duì)應(yīng)的進(jìn)程意外退出時(shí)會(huì)觸發(fā)的事件,這就使得一個(gè)進(jìn)程出現(xiàn)意外退出的情況下會(huì)通知到crashmail。
crashmail.py [-p processname] [-a] [-o string] [-m mail_address] [-s sendmail]網(wǎng)址 選項(xiàng): -p - 指定supervisor process_name。這個(gè)過(guò)程發(fā)送郵件 意外地轉(zhuǎn)換到EXITED狀態(tài)。如果這個(gè)過(guò)程是 組的一部分,可以使用 'process_name:group_name'語(yǔ)法。 -a - 當(dāng)supervisord的任何孩子過(guò)渡時(shí)發(fā)送郵件 出人意料地意外地離開(kāi)了EXITED狀態(tài)。覆蓋任何-p 在同一個(gè)crashmail進(jìn)程調(diào)用中傳遞的參數(shù)。 -o - 指定用作郵件主題標(biāo)題中前綴的參數(shù)。 -s - 用于發(fā)送電子郵件的sendmail命令 (例如“ / usr / sbin / sendmail - t - i ”)。必須是接受的命令 stdin上的頭和消息數(shù)據(jù)并發(fā)送郵件。默認(rèn)是 “ / usr / sbin / sendmail - t - i ”。 -m - 指定電子郵件地址。該腳本將向此發(fā)送郵件 crashmail檢測(cè)到進(jìn)程崩潰時(shí)的地址。如果沒(méi)有電子郵件 如果指定了地址,則不會(huì)發(fā)送電子郵件。 可以多次指定-p選項(xiàng),允許 多個(gè)過(guò)程的規(guī)范。指定-a會(huì)覆蓋任何 選擇-p。 示例調(diào)用: crashmail.py -p program1 -p group1:program2 -m dev@example.com
添加好一個(gè)進(jìn)程配置文件后
supervisorctl reload
重啟一下
整體示例代碼
[program:eacloud] command=/root/python/bin/uwsgi --ini uwsgi.ini ; 程序啟動(dòng)命令 directory=/root/tyy autostart=true ; 在supervisord啟動(dòng)的時(shí)候也自動(dòng)啟動(dòng) startsecs=10 ; 啟動(dòng)10秒后沒(méi)有異常退出,就表示進(jìn)程正常啟動(dòng)了,默認(rèn)為1秒 autorestart=true ; 程序退出后自動(dòng)重啟,可選值:[unexpected,true,false],默認(rèn)為unexpected,表示進(jìn)程意外殺死后才重啟 startretries=3 ; 啟動(dòng)失敗自動(dòng)重試次數(shù),默認(rèn)是3 user=root ; 用哪個(gè)用戶啟動(dòng)進(jìn)程,默認(rèn)是root priority=999 ; 進(jìn)程啟動(dòng)優(yōu)先級(jí),默認(rèn)999,值小的優(yōu)先啟動(dòng) redirect_stderr=true ; 把stderr重定向到stdout,默認(rèn)false stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默認(rèn)50MB stdout_logfile_backups = 20 ; stdout 日志文件備份數(shù),默認(rèn)是10 ; stdout 日志文件,需要注意當(dāng)指定目錄不存在時(shí)無(wú)法正常啟動(dòng),所以需要手動(dòng)創(chuàng)建目錄(supervisord 會(huì)自動(dòng)創(chuàng)建日志文件) stdout_logfile=/root/tyy/eacloud.log stopasgroup=false ;默認(rèn)為false,進(jìn)程被殺死時(shí),是否向這個(gè)進(jìn)程組發(fā)送stop信號(hào),包括子進(jìn)程 killasgroup=false ;默認(rèn)為false,向進(jìn)程組發(fā)送kill信號(hào),包括子進(jìn)程 [eventlistener:crashmail-exited] command=/root/python/bin/crashmail -p eacloud -m 1524701427@qq.com events=PROCESS_STATE redirect_stderr=false
到此這篇關(guān)于在python3中使用Supervisor的文章就介紹到這了,更多相關(guān)python使用Supervisor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)
- 使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
- Python supervisor強(qiáng)大的進(jìn)程管理工具的使用
- python進(jìn)程管理工具supervisor的安裝與使用教程
- 基于Python 的進(jìn)程管理工具supervisor使用指南
- Python使用Supervisor來(lái)管理進(jìn)程的方法
- python進(jìn)程管理工具supervisor使用實(shí)例
- 使用Python的Supervisor進(jìn)行進(jìn)程監(jiān)控以及自動(dòng)啟動(dòng)
- python進(jìn)程管理工具supervisor安裝使用
相關(guān)文章
pygame+opencv實(shí)現(xiàn)讀取視頻幀的方法示例
由于pygame.movie.Movie.play()只支持MPEG格式的視頻,所以決定使用與opencv讀取視頻幀的畫(huà)面,本文就詳細(xì)的介紹了pygame+opencv實(shí)現(xiàn)讀取視頻幀,感興趣的可以了解一下2021-12-12Django框架創(chuàng)建mysql連接與使用示例
這篇文章主要介紹了Django框架創(chuàng)建mysql連接與使用,簡(jiǎn)單介紹了Linux環(huán)境下mysql的安裝,并結(jié)合實(shí)例形式分析了Django框架基于第三方庫(kù)pymysql連接mysql數(shù)據(jù)庫(kù)相關(guān)操作技巧,需要的朋友可以參考下2019-07-07python中matplotlib調(diào)整圖例位置的方法實(shí)例
在matplotlib中,一般圖例默認(rèn)是在圖表內(nèi)部的,如果要放置到圖例外面,需要對(duì)坐標(biāo)進(jìn)行指定,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib調(diào)整圖例位置的相關(guān)資料,需要的朋友可以參考下2022-06-06