''' Author: your name Date: 2021-04-14 14:12:18 LastEditTime: 2021-07-03 17:26:02 LastEditors: Please set LastEditors Description: In User Settings Edit FilePath: \evm-store\backend\start.py ''' #!/usr/bin/env python # -*- coding: utf_8 -*- import sys import os import signal import json from typing import ( Any,) # import tornado.autoreload from tornado.wsgi import WSGIContainer from tornado.web import Application, RequestHandler, FallbackHandler from tornado.ioloop import IOLoop from tornado.autoreload import watch from view import app from view.monitor import DeviceMessageHandler, NotifyHandler, WatchHandler from app import config class GracefulExit(SystemExit): code = 1 class VueHandler(RequestHandler): def get(self): self.write(json.dumps({ 'code': 200, 'msg': 'success', 'data': self.request.remote_ip })) def raise_graceful_exit(*args): IOLoop.current().stop() print("Gracefully shutdown", args) raise GracefulExit() def start(): settings = { 'debug': config['DEBUG'], # 'template_path': config['TEMPLATE_PATH'], # 'static_path': config['STATIC_PATH'], 'static_url_path': '', } watch(os.sep.join([os.getcwd(), "restart.json"])) wsgi_app = WSGIContainer(app) application = Application([ (r'/', VueHandler), (r"/api/v1/evm_store/monitor", DeviceMessageHandler), (r"/api/v1/evm_store/watch", WatchHandler), (r"/ws/v1/notify", NotifyHandler), (r'.*', FallbackHandler, dict(fallback=wsgi_app)) ], **settings) if len(sys.argv) == 2: port = int(sys.argv[1]) application.listen(port, address=config['HOST'], xheaders=True) else: port = config['PORT'] application.listen(port, address=config['HOST'], xheaders=True) print(config['LOGO']) print("server running at %s:%d" % (config['HOST'], port)) # 主进程退出信号 signal.signal(signal.SIGINT, raise_graceful_exit) signal.signal(signal.SIGTERM, raise_graceful_exit) # instance = tornado.ioloop.IOLoop.instance() # tornado.autoreload.start(instance) # instance.start() IOLoop.instance().start() if __name__ == '__main__': start()