將Python 腳本作為Windows 服務運行
在使用Python 開發基於服務的系統的背景下,出現的問題是這是否可能將Python 腳本作為Windows 服務運行。本文解決了這個問題並提供了全面的答案。
事實上,利用 ActivePython 中包含的 pythoncom 函式庫或透過 pywin32 擴充功能將 Python 程式託管為 Windows 服務是可行的。為了說明此過程,請考慮以下基本服務的程式碼框架:
import win32serviceutil import win32service import win32event import servicemanager import socket class AppServerSvc (win32serviceutil.ServiceFramework): _svc_name_ = "TestService" _svc_display_name_ = "Test Service" def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) self.hWaitStop = win32event.CreateEvent(None,0,0,None) socket.setdefaulttimeout(60) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_,'')) self.main() def main(self): pass if __name__ == '__main__': win32serviceutil.HandleCommandLine(AppServerSvc)
將自訂程式碼插入main() 函數,通常部署一個無限循環,可以透過監視中設定的標誌來中斷該循環SvcStop 方法。
此外,Windows 會透過服務管理員警告您的服務的存在。您可以使用本機 Windows 公用程式(例如服務控制台 (services.msc) 或 sc 命令列工具)監視和管理它。與 Unix 中用於啟動/停止腳本的 /etc/init.d 目錄類似,Windows 使用 scm(服務控制管理員)來管理服務。利用 sc 實用程序,您可以對服務執行各種操作,包括建立、啟動、停止和配置它們。
以上是Python 腳本可以作為 Windows 服務運行嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!