def SvcDoRun(self):
# __file__ == 'service_win32.py'
exe_dir = os.path.dirname(os.path.dirname(__file__))
os.chdir(exe_dir)
win32evtlogutil.ReportEvent(
self._svc_name_,
servicemanager.PYS_SERVICE_STARTED,
0,
servicemanager.EVENTLOG_INFORMATION_TYPE,
(self._svc_name_, ''))
config_file = os.path.join(exe_dir, 'agent.conf')
config = Config(config_file)
supervisor = Supervisor(config)
win32evtlogutil.ReportEvent(
self._svc_name_,
servicemanager.PYS_SERVICE_STOPPED,
0,
servicemanager.EVENTLOG_INFORMATION_TYPE,
(self._svc_name_, ''))
thread = Thread(target=supervisor.start)
thread.daemon = True
thread.start()
while True:
rc = win32event.WaitForSingleObject(
self.hWaitStop, win32event.INFINITE)
if rc == win32event.WAIT_OBJECT_0:
win32evtlogutil.ReportEvent(
self._svc_name_,
servicemanager.PYS_SERVICE_STOPPED,
0,
servicemanager.EVENTLOG_INFORMATION_TYPE,
(self._svc_name_, ''))
break
评论列表
文章目录