首頁 >後端開發 >Python教學 >Python 腳本可以作為 Windows 服務運行嗎?

Python 腳本可以作為 Windows 服務運行嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-04 09:44:14260瀏覽

Can Python Scripts Be Run as Windows Services?

將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn