Windows サービスとして Python スクリプトを実行する
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 はサービス マネージャーを通じてサービスの存在を通知されます。サービス コンソール (services.msc) や sc コマンド ライン ツールなどのネイティブ Windows ユーティリティを使用して監視および管理できます。 Unix の開始/停止スクリプト用の /etc/init.d ディレクトリと同様に、Windows はサービスの管理に scm (サービス コントロール マネージャー) を使用します。 sc ユーティリティを利用すると、サービスの作成、開始、停止、構成など、サービスに対してさまざまなアクションを実行できます。
以上がPython スクリプトは Windows サービスとして実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。