分類
Linux

使用 Supervisor 將你的 Python 程序變成服務

不少朋友都是用 Flask 框架來寫小服務器的,方便又快捷,還能一鍵運行,很舒服。不過,如果你真的想把你的服務部署到服務器上,那你就會發現其實還有一些功課要做,這篇文章裡,我們主要來談談如何將寫好的程序在服務器上變成一個服務而不是終端裡執行的命令。

如果我們用 Python 寫了一個網站應用,那麼它就需要一直運行來監聽 HTTP 請求,如果在終端直接執行 蟒蛇 主要.PY 那就太麻煩了,你還得一直保持終端開啟,端了 ssh,程序也就結束了。

起初,我是這麼做的: nohup的 蟒蛇 -u //logcg/主要.PY > //logcg/.日誌 2>&1 & ,Nohup 這個工具能讓程序在後台運行,這樣即使你斷開了 ssh,關閉了終端,服務器上的程序依舊在運行,如果你把這條命令寫到 RC.本地 ,那麼它就能每次跟隨服務器啟動而啟動,完美……嗎?

這個解決方案看上去很完美,類似的還有比如 screen 等命令,但仔細一想,如果程序實行意外崩潰了怎麼辦?

——很遺憾,沒辦法,唯一的辦法就是等你的客戶告訴你:你的網站打不開了。

總之,現在我們可以用另一個工具直接將你的程序“變成”系統級服務,就像 Nginx,像 fail2ban 那樣,一旦程序崩潰,系統會負責將它重啟——除非你手動停止它。

這是一個純 Python 實現的工具,它是一個輕量級進程管理工具,能夠根據你的配置自動啟動並監控進程,一旦程序意外崩潰,它就會重新啟動它們。

啟動後,在 /等等//CONF 目錄下寫入你的命令相關配置,最好是一個命令一個文件,方便管理,文件名要求是 .CONF 後綴。

比如,我有一個這樣的服務:

這樣,我的 Python 程序就變成了一個叫做“logcg”的服務。

最後, supervisorctl 更新 所有 更新所有服務的配置信息:

當然,你還可以使用命令 supervisorctl 狀態 所有 來查看所有服務的運行狀態,將 所有 換成特定的服務名稱,就能查詢單個的服務了。

這下,再也不用擔心因為一些意外的小問題導致程序崩潰再也起不來了。

參考文獻

本文由 落格博客 原創撰寫:落格博客 » 使用 Supervisor 將你的 Python 程序變成服務

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3304.html

通過 落格博客

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

2 在回答“使用 Supervisor 將你的 Python 程序變成服務”

發表評論

您的電子郵件地址不會被公開. 必填字段標 *