将 Python 脚本作为 Windows 服务运行
管理存储在数据库中的相互关联的对象需要一个为以下对象提供更高级别接口的服务:对这些对象的操作。但是,将 Python 程序作为 Windows 服务运行以实现无需用户登录即可自动执行的问题引起了关注。
是否可以将 Python 程序作为 Windows 服务运行?
是的,可以使用 ActivePython 中包含的或可安装的 pythoncom 库将 Python 程序作为 Windows 服务运行pywin32.
示例实现
简单服务的基本框架:
import win32serviceutil import win32service import win32event import servicemanager 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) 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)
Windows 服务感知和管理
Windows 通过以下方式识别该服务win32serviceutil.ServiceFramework 和 servicemanager 模块。
您可以使用本机 Windows 实用程序(例如控制面板中的服务小程序)或通过命令行使用以下命令来管理服务:
类似于 /etc/init.d
没有直接等效于将启动/停止脚本放在 /etc/init.d 中视窗。 Windows 服务通常在 Windows 注册表中配置。但是,您可以利用 SystemD 或 Supervisor 等服务控制管理器来实现类似的功能。
以上是Python程序可以作为Windows服务运行吗?的详细内容。更多信息请关注PHP中文网其他相关文章!