Python使用Supervisor來管理進(jìn)程的方法
本文實(shí)例講述了Python使用Supervisor來管理進(jìn)程的方法。分享給大家供大家參考。具體分析如下:
Supervisor可以啟動、停止、重啟*nix系統(tǒng)中的程序。也可以重啟崩潰的程序。
supervisord的一個守護(hù)進(jìn)程,用于將指定的進(jìn)程當(dāng)做子進(jìn)程來運(yùn)行。
supervisorctl是一個客戶端程序,可以查看日志并通過統(tǒng)一的會話來控制進(jìn)程。
看例子:
我們寫了一個py腳本,用于往log文件中記錄一條當(dāng)前的時間。
root@ubuntu:/home/zoer# cat daemon.py #!/usr/bin/env python import time import os time.sleep(1) f=open("log",'a') t=time.time() f.write(str(t)) f.write("\n") f.close()
安裝過程就不說了。
安裝完畢supervisor之后【將配置文件放在/etc下】。修改配置文件,在最后增加如下內(nèi)容:
[program:ddd]
command=/home/zoer/daemon.py
autorestart=true
然后我們啟動supervisor并啟動daemon.py的執(zhí)行。
root@ubuntu:/home/zoer# supervisord /usr/local/lib/python2.7/dist-packages/supervisor-3.0b1-py2.7.egg/supervisor/options.py:286: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 'Supervisord is running as root and it is searching ' root@ubuntu:/home/zoer# supervisorctl ddd STARTING supervisor> start ddd ddd: ERROR (already started) supervisor> stop ddd ddd: stopped supervisor> start ddd ddd: started supervisor>
從上面的例子中,看到,可以通過start或者stop命令來啟動或者停止ddd這個進(jìn)程。ddd這里就是我們在配置文件中增加的內(nèi)容(daemon.py這個腳本)。
也可以使用restart。如下:
supervisor> restart ddd
ddd: stopped
ddd: started
下面我們測試一下,假設(shè)說我們手動kill掉了ddd這個進(jìn)程,那么ddd會自動恢復(fù)執(zhí)行嗎?
為了做實(shí)驗(yàn),把代碼修改如下:
root@ubuntu:/home/zoer# cat daemon.py #!/usr/bin/env python import time import os while True: time.sleep(1) f=open("log",'a') t=time.time() f.write(str(t)) f.write("\n") f.close()
通過ps可以找到這個進(jìn)程的id:
root 9354 0.2 0.4 10924 4200 ? S 23:16 0:00 python /home/zoer/daemon.py root 9395 0.0 0.0 4392 832 pts/3 S+ 23:17 0:00 grep --color=auto daemon root@ubuntu:/home/zoer#
看下面的操作:
root@ubuntu:/home/zoer# rm log;touch log;kill 9354 root@ubuntu:/home/zoer# cat log 1364710712.51 root@ubuntu:/home/zoer# cat log 1364710712.51 1364710713.51 root@ubuntu:/home/zoer# cat log 1364710712.51 1364710713.51 root@ubuntu:/home/zoer# cat log 1364710712.51 1364710713.51 1364710714.52 root@ubuntu:/home/zoer# cat log 1364710712.51 1364710713.51 1364710714.52 1364710715.52
刪除了log文件,并且重新創(chuàng)建。然后干掉了daemon.py的那個進(jìn)程。會發(fā)現(xiàn)log內(nèi)容又重新有新的內(nèi)容了。再次ps查看進(jìn)程號。
root 9429 0.1 0.4 10924 4200 ? S 23:18 0:00 python /home/zoer/daemon.py root 9440 0.0 0.0 4392 828 pts/3 S+ 23:19 0:00 grep --color=auto daemon root@ubuntu:/home/zoer#
會發(fā)現(xiàn)進(jìn)程號已經(jīng)變成9429了。說明supervisor已經(jīng)重啟了被干掉了的進(jìn)程。
希望本文所述對大家的Python程序設(shè)計有所幫助。
- python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(wù)(worker/beat)
- 在python3中使用Supervisor的詳細(xì)教程
- 使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
- Python supervisor強(qiáng)大的進(jìn)程管理工具的使用
- python進(jìn)程管理工具supervisor的安裝與使用教程
- 基于Python 的進(jìn)程管理工具supervisor使用指南
- python進(jìn)程管理工具supervisor使用實(shí)例
- 使用Python的Supervisor進(jìn)行進(jìn)程監(jiān)控以及自動啟動
- python進(jìn)程管理工具supervisor安裝使用
相關(guān)文章
Python實(shí)戰(zhàn)之實(shí)現(xiàn)簡易的學(xué)生選課系統(tǒng)
又到了小伙伴們最喜歡的python實(shí)戰(zhàn)環(huán)節(jié),文中對實(shí)現(xiàn)簡易的學(xué)生選課系統(tǒng)作了非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn)
本文主要介紹了pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python使用pylab庫實(shí)現(xiàn)繪制直方圖功能示例
這篇文章主要介紹了Python使用pylab庫實(shí)現(xiàn)繪制直方圖功能,結(jié)合實(shí)例形式分析了Python數(shù)據(jù)讀取、遍歷以及基于pylab庫繪制直方圖的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python實(shí)現(xiàn)從尾到頭打印單鏈表操作示例
這篇文章主要介紹了python實(shí)現(xiàn)從尾到頭打印單鏈表操作,結(jié)合實(shí)例形式分析了Python單鏈表的定義、判斷、添加、打印等相關(guān)操作技巧,需要的朋友可以參考下2020-02-02使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類方式
這篇文章主要介紹了使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python利用filestools模塊實(shí)現(xiàn)水印添加
最近發(fā)現(xiàn)的這款filestools非標(biāo)準(zhǔn)庫其實(shí)真正實(shí)現(xiàn)添加水印的只要一個函數(shù)的調(diào)用,一行代碼即可完成水印的添加,感興趣的快跟隨小編一起學(xué)起來吧2022-09-09Python中利用sqrt()方法進(jìn)行平方根計算的教程
這篇文章主要介紹了Python中利用sqrt()方法進(jìn)行平方根計算的教程,是Python學(xué)習(xí)的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作
這篇文章主要介紹了Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07