服务可以安装,但是启动就自动停止,弹窗提示本地计算机上的 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 1
刚好最近刚做完。 http://chixq.com/articles/windows-agent/
运行 eventvwr.msc 可以查看 service 出错事件是什么。 大多数情况,是系统 local system ( service 默认)账户不能取到你写的 python module 。可以 cmd -> python -> import <your_module> 看是否成功。所以直接安装到 site-packages 肯定 OK 。 run.py 肯定是可以的,注册 service 相对路径。 debug 肯定也可以。 |
3
skywatcher OP @webdev 修改运行服务的用户?我试试看
|
4
skywatcher OP |
5
skywatcher OP |
6
chilaoqi 2016-01-22 23:01:02 +08:00
@skywatcher 运行-> eventvwr.msc 可以看到服务启动不了的具体报错是什么
|