Advertisement
Guest User

Untitled

a guest
Jul 11th, 2012
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import win32service
  2. import win32serviceutil
  3. import win32api
  4. import win32con
  5. import win32event
  6. import win32evtlogutil
  7. import os, sys, string, time
  8. import traceback
  9. import config
  10. import logging
  11. from MySQL_handler import MySQLHandler
  12.  
  13. class NLUService(win32serviceutil.ServiceFramework):
  14.    
  15.     _svc_name_ = "NLU_Triage"
  16.     _svc_display_name_ = "NLU Triage Service"
  17.          
  18.     def __init__(self, args):
  19.         win32serviceutil.ServiceFramework.__init__(self, args)
  20.         self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
  21.         DBHandler=MySQLHandler()
  22.         logging.getLogger('').addHandler(DBHandler)
  23.  
  24.     def SvcStop(self):
  25.            self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  26.            win32event.SetEvent(self.hWaitStop)
  27.          
  28.     def SvcDoRun(self):
  29.         import servicemanager
  30.         servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED,(self._svc_name_, ''))
  31.         self.timeout = 10000     # This is how long the service will wait to run / refresh itself (milliseconds)
  32.  
  33.         while 1:
  34.             # Wait for service stop signal, if I timeout, loop again
  35.             rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
  36.             # Check to see if self.hWaitStop happened
  37.             if rc == win32event.WAIT_OBJECT_0:
  38.             # Stop signal encountered
  39.                 servicemanager.LogInfoMsg("NLU_Triage - STOPPED!")  #For Event Log
  40.                 break
  41.             else:
  42.                 #[actual service code between rests]
  43.                 try:
  44.                     logging.info("Starting NLU Triage Process...")
  45.                     file_path = "D:\\NLU Triage\\hf_triage.py"
  46.                     execfile(file_path)             #Execute the script
  47.                     logging.info("NLU Triage Process finished")
  48.                 except:
  49.                     logging.error(traceback.format_exc())
  50.  
  51.  
  52. def ctrlHandler(ctrlType):
  53.    return True
  54.                  
  55. if __name__ == '__main__':  
  56.    win32api.SetConsoleCtrlHandler(ctrlHandler, True)  
  57.    win32serviceutil.HandleCommandLine(NLUService)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement