[英]How do I keep my python backend scripts running forever on Microsoft Windows?
[英]How do I keep a python HTTP Server up forever?
我在python中編寫了一個簡單的HTTP服務器,通過Web UI管理服務器上托管的數據庫。 它功能完善,按預期工作。 然而,它有一個巨大的問題,它不會留下來。 它會工作一個小時左右,但如果在返回使用它時長時間不使用,我每次都必須重新初始化它。 現在我使用的方法是:
def main():
global db
db = DB("localhost")
server = HTTPServer(('', 8080), MyHandler)
print 'started httpserver...'
server.serve_forever()
if __name__ == '__main__':
main()
我在linux服務器的后台運行這個,所以我會運行像sudo python webserver.py這樣的命令來分離它,但正如我之前提到的那樣,它會退出。 任何建議都是值得贊賞的原因,因為它看起來我不明白為什么它關閉。
您可以使用python-daemon包或使用pywin32的Windows服務在Python中編寫UNIX守護程序 。
不幸的是,我知道沒有“可移植”的解決方案來編寫守護進程/服務進程(用Python或其他方式)。
這是關於駕駛的故事中的一條建議。 你當然想要安全駕駛(找出你的程序失敗的原因並修復它)。 在(罕見?)崩潰的情況下,某些監視基礎結構(如monit )可以幫助重新啟動崩潰的進程。 您可能不希望用它來報告碰撞,就像您每次停車時都不想部署安全氣囊一樣。
您是否嘗試過在屏幕會話中運行它?
$ screen -L sudo python webserver.py
好吧,第一步是找出它崩潰的原因。 有兩種可能的可能性:
在前一種情況下,你可以通過try-except將它包裝在一個循環中,使它永遠存在。 記錄錯誤詳細信息可能是個好主意。
后一種情況有點棘手,因為它可能是由各種各樣的事情引起的。 如果你在前台運行腳本會發生什么? 如果沒有,也許運行某種維護服務會終止你的腳本?
不是一個完整的答案,但也許足以幫助您診斷問題。
作為屏幕的替代品, NoHup將確保您在注銷后繼續運行。
它值得檢查日志,看看為什么它被殺死/退出以及它可能與操作系統無關,而是內部故障。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.