63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
import json
|
|
import logging
|
|
from datetime import timedelta
|
|
|
|
from flask import Flask, request
|
|
from flask_jwt_extended import (
|
|
JWTManager)
|
|
|
|
from py12306.config import Config
|
|
from py12306.helpers.func import *
|
|
|
|
|
|
@singleton
|
|
class Web:
|
|
session = None
|
|
jwt = None
|
|
log = None
|
|
|
|
def __init__(self):
|
|
self.session = Flask(__name__)
|
|
self.log = logging.getLogger('werkzeug')
|
|
self.log.setLevel(logging.ERROR)
|
|
|
|
self.register_blueprint()
|
|
self.session.config['JWT_SECRET_KEY'] = 'secret' # 目前都是本地,暂不用放配置文件
|
|
self.session.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(seconds=60 * 60 * 24 * 7) # Token 超时时间 7 天
|
|
self.jwt = JWTManager(self.session)
|
|
|
|
def register_blueprint(self):
|
|
from py12306.web.handler.user import user
|
|
from py12306.web.handler.stat import stat
|
|
from py12306.web.handler.app import app
|
|
from py12306.web.handler.query import query
|
|
from py12306.web.handler.log import log
|
|
self.session.register_blueprint(user)
|
|
self.session.register_blueprint(stat)
|
|
self.session.register_blueprint(app)
|
|
self.session.register_blueprint(query)
|
|
self.session.register_blueprint(log)
|
|
|
|
@classmethod
|
|
def run(cls):
|
|
self = cls()
|
|
self.start()
|
|
|
|
def start(self):
|
|
if not Config().WEB_ENABLE or Config().is_slave(): return
|
|
# if Config().IS_DEBUG:
|
|
# self.run_session()
|
|
# else:
|
|
create_thread_and_run(self, 'run_session', wait=False)
|
|
|
|
def run_session(self):
|
|
debug = False
|
|
if is_main_thread():
|
|
debug = Config().IS_DEBUG
|
|
self.session.run(debug=debug, port=Config().WEB_PORT, host='0.0.0.0')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
Web.run()
|