''' Author: your name Date: 2021-04-14 14:12:18 LastEditTime: 2021-07-01 00:06:01 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 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 fullstack.log import logger 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): remote_ip = self.request.remote_ip logger.info("remote_ip %s" % remote_ip) self.render("index.html") 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'/index', 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()