【发布时间】:2011-11-05 13:19:39
【问题描述】:
我有一个用 Python 编写的 Windows 服务。我想在机器启动时自动启动它。
我该怎么做?
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "Service"
_svc_display_name_ = "Myservice"
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.timeout = 120000
self.main() #//thread.start_new_thread(main)
def main(self):
pass
def ctrlHandler(ctrlType):
return True
if __name__ == '__main__':
win32api.SetConsoleCtrlHandler(ctrlHandler, True)
win32serviceutil.HandleCommandLine(AppServerSvc)
【问题讨论】:
-
出于好奇,并且由于我没有服务经验 - 上面的代码有什么作用?
-
我不明白。服务在系统启动时运行。
-
您的安装程序需要将服务启动类型设置为自动(或者用户可以手动设置)。
-
将启动类型更改为自动是有效的。问题是从主要部分开始作为威胁。当我在这里进行更改时,问题就解决了。谢谢。
-
注意:我猜有些服务是在用户登录后启动的,但一些基本的服务是在用户登录之前启动的。例如winlogon。如果我错了,请纠正我。
标签: python windows windows-services