Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import win32serviceutil
- import win32service
- import win32event
- import servicemanager
- import logging.handlers
- import sys
- from flask import Flask
- log_file_path = "c:pythonsearchsearch_server.log" # Put full path name here
- mylogger = logging.getLogger("TestLogger")
- mylogger.setLevel(logging.INFO)
- handler = logging.handlers.RotatingFileHandler(log_file_path)
- mylogger.addHandler(handler)
- app = Flask(__name__)
- @app.route('/')
- def index():
- mylogger.info("-"*80)
- mylogger.info("-- Web request made")
- mylogger.info("-"*80)
- return "Hello, World!"
- def run_my_webservice():
- print("Starting Web Service")
- mylogger.info("Starting Web Service")
- try:
- app.run(debug=False)
- mylogger.info("Web Service has been stopped")
- print("Web Service has been stopped")
- except AttributeError as err:
- mylogger.info(" Attribute Error")
- for arg in err.args:
- mylogger.info(" " + arg)
- except:
- mylogger.info("Unexpected error:")
- mylogger.info(sys.exc_info()[0])
- class AppServerSvc(win32serviceutil.ServiceFramework):
- _svc_name_ = "TestService"
- _svc_display_name_ = "Test Service"
- _svc_description_ = "New Test Service"
- def __init__(self, args):
- mylogger.info('Init')
- win32serviceutil.ServiceFramework.__init__(self, args)
- self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
- def SvcStop(self):
- mylogger.info('Stop')
- self.stop()
- self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
- win32event.SetEvent(self.hWaitStop)
- def SvcDoRun(self):
- mylogger.info('Run')
- self.start()
- servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED,
- (self._svc_name_, ''))
- self.main()
- def start(self):
- mylogger.info('Start')
- def stop(self):
- mylogger.info('Start')
- def main(self):
- mylogger.info('Main')
- run_my_webservice()
- mylogger.info('End of main - should not be hit while webservice is still running.')
- if __name__ == '__main__':
- mylogger.info("")
- mylogger.info("-" * 80)
- mylogger.info('Called with command args:')
- for arg in sys.argv:
- mylogger.info(" " + arg)
- mylogger.info("-" * 80)
- if len(sys.argv) == 1:
- AppServerSvc.main(AppServerSvc)
- else:
- win32serviceutil.HandleCommandLine(AppServerSvc)
- --------------------------------------------------------------------------------
- Called with command args:
- servicetest.py
- --------------------------------------------------------------------------------
- Main
- Starting Web Service
- --------------------------------------------------------------------------------
- -- Web request made
- --------------------------------------------------------------------------------
- Web Service has been stopped
- End of main - should not be hit while webservice is still running.
- --------------------------------------------------------------------------------
- Called with command args:
- servicetest.py
- install
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- Called with command args:
- servicetest.py
- start
- --------------------------------------------------------------------------------
- Init
- Run
- Start
- Main
- Starting Web Service
- Attribute Error
- 'NoneType' object has no attribute 'write'
- End of main - should not be hit while webservice is still running.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement