Untitled
unknown
plain_text
2 years ago
2.8 kB
6
Indexable
import socket import win32serviceutil import servicemanager import win32event import win32service class SMWinservice(win32serviceutil.ServiceFramework): '''Base class to create winservice in Python''' _svc_name_ = 'pythonService' _svc_display_name_ = 'Python Service' _svc_description_ = 'Python Service Description' @classmethod def parse_command_line(cls): ''' ClassMethod to parse the command line ''' win32serviceutil.HandleCommandLine(cls) def __init__(self, args): ''' Constructor of the winservice ''' win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) socket.setdefaulttimeout(60) def SvcStop(self): ''' Called when the service is asked to stop ''' self.stop() self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): ''' Called when the service is asked to start ''' self.start() servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '')) self.main() def start(self): ''' Override to add logic before the start eg. running condition ''' pass def stop(self): ''' Override to add logic before the stop eg. invalidating running condition ''' pass def main(self): pass # entry point of the module: copy and paste into the new module # ensuring you are calling the "parse_command_line" of the new created class if __name__ == '__main__': SMWinservice.parse_command_line() import socket import win32serviceutil import servicemanager import win32event import win32service import time import random from pathlib import Path from SMWinservice import SMWinservice class Cerved_FTP_WINSR(SMWinservice): _svc_name_ = "Cerved_FTP_WINSR" _svc_display_name_ = "Win Service FTP Cerved" _svc_description_ = "Win service that downloads cerved data automatically every n min" def start(self): self.isrunning = True def stop(self): self.isrunning = False def main(self): i = 0 while self.isrunning: random.seed() x = random.randint(1, 1000000) Path(f'c:{x}.txt').touch() time.sleep(5) if __name__ == '__main__': Cerved_FTP_WINSR.parse_command_line()
Editor is loading...
Leave a Comment