def SvcDoRun(self): # Write an event log record - in debug mode we will also # see this message printed. servicemanager.LogMsg( servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '') ) # attempt to retrieve comnfig file name self._svc_configFile_ = win32serviceutil.GetServiceCustomOption( TaskRunnerService._svc_name_, "TaskConfigurationFile", self._svc_configFile_ ) # Create the active object. self.taskRunner = TaskRunner() self.taskRunner.configure( parseXmlFile( self._svc_configFile_ ) ) self.taskRunner.start() self.running = True while self.running: # it is all on deamon threads time.sleep(1) # Write another event log record. servicemanager.LogMsg( servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STOPPED, (self._svc_name_, "") )
class TaskRunnerService(win32serviceutil.ServiceFramework): _svc_name_ = "TaskRunner" _svc_display_name_ = "Webbrick Gateway TaskRunner" _svc_description_ = "Acts as a host for python tasks." def __init__(self, args): self._svc_configFile_ = "TaskRunner.xml" win32serviceutil.ServiceFramework.__init__(self, args) self.running = False def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False self.taskRunner.stop() def SvcDoRun(self): # Write an event log record - in debug mode we will also # see this message printed. servicemanager.LogMsg( servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '') ) # attempt to retrieve comnfig file name self._svc_configFile_ = win32serviceutil.GetServiceCustomOption( TaskRunnerService._svc_name_, "TaskConfigurationFile", self._svc_configFile_ ) # Create the active object. self.taskRunner = TaskRunner() self.taskRunner.configure( parseXmlFile( self._svc_configFile_ ) ) self.taskRunner.start() self.running = True while self.running: # it is all on deamon threads time.sleep(1) # Write another event log record. servicemanager.LogMsg( servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STOPPED, (self._svc_name_, "") )
def testTaskRunner(self): runner = TaskRunner() runner.configure( parseXmlString(self._configure) ) runner.start() # all tasks task = runner._tasks['testTask'] # hack. time.sleep(1) self.assertEqual( task._running, True ) assert( task._runtime > 0, 'task did not run' ) self.assertEqual( task._value, 'value' ) runner.stop() time.sleep(1) self.assertEqual( task._running, False )