我想守護一個python進程,現在想問一下是否有一個守護進程運行的好習慣,就像父進程一樣,並調用另一個可以打開10-30個線程的類。Python守護進程
我打算爲一組服務器編寫一個監視腳本,並希望每隔5分鐘檢查一次每臺服務器,確認每臺服務器正好5分鐘檢查一次。
我想有這種方式(在某種程度上講,PS auxf風格輸出):
|monitor-daemon.py
\-check-server.py
\-check-server.py
....
謝謝!
我想守護一個python進程,現在想問一下是否有一個守護進程運行的好習慣,就像父進程一樣,並調用另一個可以打開10-30個線程的類。Python守護進程
我打算爲一組服務器編寫一個監視腳本,並希望每隔5分鐘檢查一次每臺服務器,確認每臺服務器正好5分鐘檢查一次。
我想有這種方式(在某種程度上講,PS auxf風格輸出):
|monitor-daemon.py
\-check-server.py
\-check-server.py
....
謝謝!
您可以使用supervisord這一點。您可以配置任務以響應事件。這些事件可以手動創建,也可以通過監視進程自動創建,也可以定期進行。
它是完全可定製的,並用Python編寫。
例子:
[program:your_daemon_name]
command=your_daemon_process
# Add extra options here according to the manual...
[eventlistener:your_monitor_name]
command=your_monitor_process
events=PROCESS_STATE_RUNNING # Will be triggered after a program changes from starting to running
# Add extra options here according to the manual...
或者,如果你想要的事件監聽響應過程輸出使用事件PROCESS_COMMUNICATION_STDOUT
或TICK_60
爲每分鐘檢查。日誌可以重定向到文件等,所以你可以隨時查看狀態。
確實沒有太多的創建自己的daemonize
功能:Unix環境下的高級編程源碼(第二版)免費提供:http://www.apuebook.com/src.tar.gz - 您正在尋找apue.2e/daemons/init.c
文件。
有一個small helper program可以完成所有創建正確的守護進程的工作,它可以用來包裝任意程序;這可能會節省一些麻煩。
謝謝,但這看起來像是一個矯枉過正的(此時) - 如果你有以下任何建議: (對不起,如果重複自己) - 守護進程已啓動,檢查是否一切正常 - 調用(示例)MyMonitor()。check() - MyMonitor.check()有任務 - 從數據庫獲取數據(SQLite/MySQL) - 傳遞數據併爲每個數據條目打開線程 - 基於輸出進一步的行動在那裏(失敗的端口 - 發送電子郵件) - 關閉創建主題 對不起,這樣n00bish風格,但要檢查是否一切就位,在使用額外的模塊之前。 – abiko 2010-08-01 22:13:03
我已經添加了一個例子abiko,也許這將有所幫助。請參閱文檔以獲取示例事件偵聽器:http://supervisord.org/events.html#example-event-listener-implementation – Wolph 2010-08-02 15:00:00
是的,supervisord太過複雜且過於複雜。按照備用答案中的建議,最好使用http://pypi.python.org/pypi/python-daemon。 – aculich 2011-12-04 11:12:51