start.py 2.11 KB
Newer Older
wanli's avatar
wanli committed
1 2 3
'''
Author: your name
Date: 2021-04-14 14:12:18
wanli's avatar
wanli committed
4
LastEditTime: 2021-07-14 21:37:53
wanli's avatar
wanli committed
5 6 7 8
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\backend\start.py
'''
wanli's avatar
wanli committed
9 10 11 12 13
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import sys
import os
import signal
wanli's avatar
wanli committed
14
# import tornado.autoreload
wanli's avatar
wanli committed
15 16 17 18
from tornado.wsgi import WSGIContainer
from tornado.web import Application, RequestHandler, FallbackHandler
from tornado.ioloop import IOLoop
from tornado.autoreload import watch
wanli's avatar
wanli committed
19
from view import app
wanli's avatar
wanli committed
20
from view.monitor import DeviceMessageHandler, NotifyHandler, WatchHandler
wanli's avatar
wanli committed
21
from app import config
wanli's avatar
wanli committed
22

wanli's avatar
wanli committed
23 24
class GracefulExit(SystemExit):
    code = 1
wanli's avatar
wanli committed
25 26 27

class VueHandler(RequestHandler):
    def get(self):
wanli's avatar
wanli committed
28
        self.write(json.dumps({ 'code': 200, 'msg': 'success', 'data': self.request.remote_ip }))
wanli's avatar
wanli committed
29

wanli's avatar
wanli committed
30 31 32 33 34
def raise_graceful_exit(*args):
    IOLoop.current().stop()
    print("Gracefully shutdown", args)
    raise GracefulExit()

wanli's avatar
wanli committed
35
def start():
wanli's avatar
wanli committed
36 37
    settings = {
        'debug': config['DEBUG'],
wanli's avatar
wanli committed
38 39
    #     'template_path': config['TEMPLATE_PATH'],
    #     'static_path': config['STATIC_PATH'],
wanli's avatar
wanli committed
40
        'static_url_path': '',
wanli's avatar
wanli committed
41
    }
wanli's avatar
wanli committed
42 43 44 45
    watch(os.sep.join([os.getcwd(), "restart.json"]))
    wsgi_app = WSGIContainer(app)
    application = Application([
        (r'/', VueHandler),
wanli's avatar
wanli committed
46
        (r"/api/v1/evm_store/monitor", DeviceMessageHandler),
wanli's avatar
wanli committed
47
        (r"/api/v1/evm_store/watch", WatchHandler),
wanliofficial's avatar
wanliofficial committed
48
        (r"/ws/v1/notify", NotifyHandler),
wanli's avatar
wanli committed
49 50 51 52 53
        (r'.*', FallbackHandler, dict(fallback=wsgi_app))
    ], **settings)

    if len(sys.argv) == 2:
        port = int(sys.argv[1])
wanliofficial's avatar
wanliofficial committed
54
        application.listen(port, address=config['HOST'], xheaders=True)
wanli's avatar
wanli committed
55 56
    else:
        port = config['PORT']
wanliofficial's avatar
wanliofficial committed
57
        application.listen(port, address=config['HOST'], xheaders=True)
wanli's avatar
wanli committed
58 59 60 61

    print(config['LOGO'])
    print("server running at %s:%d" % (config['HOST'], port))
 
wanli's avatar
wanli committed
62 63 64
    # 主进程退出信号
    signal.signal(signal.SIGINT, raise_graceful_exit)
    signal.signal(signal.SIGTERM, raise_graceful_exit)
wanli's avatar
wanli committed
65

wanli's avatar
wanli committed
66 67 68
    # instance = tornado.ioloop.IOLoop.instance()
    # tornado.autoreload.start(instance)
    # instance.start()
wanli's avatar
wanli committed
69 70 71 72
    IOLoop.instance().start()

if __name__ == '__main__':
    start()