
服务可以安装,但是启动就自动停止,弹窗提示本地计算机上的 HelloWorld Service 启动后停止,某些服务在未由其他服务或程序使用时将自动停止,通过run.py运行没有问题,求解什么原因?
class HelloWorldSvc (win32serviceutil.ServiceFramework): _svc_name_ = "HelloWorld-Service" _svc_display_name_ = "HelloWorld Service" def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) self.stop_event = win32event.CreateEvent(None,0,0,None) socket.setdefaulttimeout(60) self.stop_requested = False def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.stop_event) logging.info('Stopping service ...') self.stop_requested = True def SvcDoRun(self): servicemanager.LogMsg( servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '') ) self.main() @staticmethod def main(): file_path = os.path.split(os.path.realpath(__file__))[0] + '\\run.py' print file_path try: execfile(file_path) except: pass if __name__ == '__main__': win32serviceutil.HandleCommandLine(HelloWorldSvc) 1 webdev 2016-01-22 09:48:04 +08:00 看下你安装的服务是在哪个用户下运行的(猜测),改成你自己登陆的用户试试 |
2 chilaoqi 2016-01-22 09:59:37 +08:00 刚好最近刚做完。 http://chixq.com/articles/windows-agent/ 运行 eventvwr.msc 可以查看 service 出错事件是什么。 大多数情况,是系统 local system ( service 默认)账户不能取到你写的 python module 。可以 cmd -> python -> import <your_module> 看是否成功。所以直接安装到 site-packages 肯定 OK 。 run.py 肯定是可以的,注册 ervice 相对路径。 debug 肯定也可以。 |
3 skywatcher OP @webdev 修改运行服务的用户?我试试看 |
4 skywatcher OP |
5 skywatcher OP |
6 chilaoqi 2016-01-22 23:01:02 +08:00 @skywatcher 运行-> eventvwr.msc 可以看到服务启动不了的具体报错是什么 |