Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. import win32serviceutil
  2. import win32service
  3. import win32event
  4. import servicemanager
  5. import logging.handlers
  6. import sys
  7. from flask import Flask
  8.  
  9. log_file_path = "c:pythonsearchsearch_server.log" # Put full path name here
  10. mylogger = logging.getLogger("TestLogger")
  11. mylogger.setLevel(logging.INFO)
  12. handler = logging.handlers.RotatingFileHandler(log_file_path)
  13. mylogger.addHandler(handler)
  14.  
  15.  
  16. app = Flask(__name__)
  17.  
  18.  
  19. @app.route('/')
  20. def index():
  21. mylogger.info("-"*80)
  22. mylogger.info("-- Web request made")
  23. mylogger.info("-"*80)
  24. return "Hello, World!"
  25.  
  26.  
  27. def run_my_webservice():
  28. print("Starting Web Service")
  29. mylogger.info("Starting Web Service")
  30.  
  31. try:
  32. app.run(debug=False)
  33. mylogger.info("Web Service has been stopped")
  34. print("Web Service has been stopped")
  35. except AttributeError as err:
  36. mylogger.info(" Attribute Error")
  37. for arg in err.args:
  38. mylogger.info(" " + arg)
  39. except:
  40. mylogger.info("Unexpected error:")
  41. mylogger.info(sys.exc_info()[0])
  42.  
  43.  
  44. class AppServerSvc(win32serviceutil.ServiceFramework):
  45. _svc_name_ = "TestService"
  46. _svc_display_name_ = "Test Service"
  47. _svc_description_ = "New Test Service"
  48.  
  49. def __init__(self, args):
  50. mylogger.info('Init')
  51. win32serviceutil.ServiceFramework.__init__(self, args)
  52. self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
  53.  
  54. def SvcStop(self):
  55. mylogger.info('Stop')
  56. self.stop()
  57. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  58. win32event.SetEvent(self.hWaitStop)
  59.  
  60. def SvcDoRun(self):
  61. mylogger.info('Run')
  62. self.start()
  63. servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED,
  64. (self._svc_name_, ''))
  65. self.main()
  66.  
  67. def start(self):
  68. mylogger.info('Start')
  69.  
  70. def stop(self):
  71. mylogger.info('Start')
  72.  
  73. def main(self):
  74. mylogger.info('Main')
  75. run_my_webservice()
  76. mylogger.info('End of main - should not be hit while webservice is still running.')
  77.  
  78.  
  79. if __name__ == '__main__':
  80. mylogger.info("")
  81. mylogger.info("-" * 80)
  82. mylogger.info('Called with command args:')
  83.  
  84. for arg in sys.argv:
  85. mylogger.info(" " + arg)
  86.  
  87. mylogger.info("-" * 80)
  88.  
  89. if len(sys.argv) == 1:
  90. AppServerSvc.main(AppServerSvc)
  91. else:
  92. win32serviceutil.HandleCommandLine(AppServerSvc)
  93.  
  94. --------------------------------------------------------------------------------
  95. Called with command args:
  96. servicetest.py
  97. --------------------------------------------------------------------------------
  98. Main
  99. Starting Web Service
  100. --------------------------------------------------------------------------------
  101. -- Web request made
  102. --------------------------------------------------------------------------------
  103. Web Service has been stopped
  104. End of main - should not be hit while webservice is still running.
  105.  
  106. --------------------------------------------------------------------------------
  107. Called with command args:
  108. servicetest.py
  109. install
  110. --------------------------------------------------------------------------------
  111.  
  112. --------------------------------------------------------------------------------
  113. Called with command args:
  114. servicetest.py
  115. start
  116. --------------------------------------------------------------------------------
  117. Init
  118. Run
  119. Start
  120. Main
  121. Starting Web Service
  122. Attribute Error
  123. 'NoneType' object has no attribute 'write'
  124. End of main - should not be hit while webservice is still running.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement