Guest User

Untitled

a guest
Apr 22nd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. import win32serviceutil
  2. import win32service
  3. import win32event
  4. import servicemanager
  5. import socket
  6. import time
  7. import logging
  8.  
  9. logging.basicConfig(
  10. filename = 'c:\\Temp\\hello-service.log',
  11. level = logging.DEBUG,
  12. format = '[helloworld-service] %(levelname)-7.7s %(message)s'
  13. )
  14.  
  15. class HelloWorldSvc (win32serviceutil.ServiceFramework):
  16. _svc_name_ = "HelloWorld-Service"
  17. _svc_display_name_ = "HelloWorld Service"
  18.  
  19. def __init__(self,args):
  20. win32serviceutil.ServiceFramework.__init__(self,args)
  21. self.stop_event = win32event.CreateEvent(None,0,0,None)
  22. socket.setdefaulttimeout(60)
  23. self.stop_requested = False
  24.  
  25. def SvcStop(self):
  26. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  27. win32event.SetEvent(self.stop_event)
  28. logging.info('Stopping service ...')
  29. self.stop_requested = True
  30.  
  31. def SvcDoRun(self):
  32. servicemanager.LogMsg(
  33. servicemanager.EVENTLOG_INFORMATION_TYPE,
  34. servicemanager.PYS_SERVICE_STARTED,
  35. (self._svc_name_,'')
  36. )
  37. self.main()
  38.  
  39. def main(self):
  40. logging.info(' ** Hello PyWin32 World ** ')
  41. # Simulate a main loop
  42. for i in range(0,50):
  43. if self.stop_requested:
  44. logging.info('A stop signal was received: Breaking main loop ...')
  45. break
  46. time.sleep(5)
  47. logging.info("Hello at %s" % time.ctime())
  48. return
  49.  
  50. if __name__ == '__main__':
  51. if len(sys.argv) == 1:
  52. servicemanager.Initialize()
  53. servicemanager.PrepareToHostSingle(HelloWorldSvc)
  54. servicemanager.StartServiceCtrlDispatcher()
  55. else:
  56. win32serviceutil.HandleCommandLine(HelloWorldSvc)
Add Comment
Please, Sign In to add comment