# 需要导入模块: import socketio [as 别名]
# 或者: from socketio import Server [as 别名]
def run(browser=True):
port = 5000
if len(sys.argv) > 1:
port = int(sys.argv[1])
app = Flask(__name__, static_folder=static_path)
app.register_blueprint(Index().register())
logger = logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
console = StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(formatter)
logger.addHandler(console)
if not app.debug:
file = TimedRotatingFileHandler(data_path + "/error.log", when="w0", backupCount=14)
file.setLevel(logging.ERROR)
file.setFormatter(formatter)
logger.addHandler(file)
try:
config = Config()
secret_key = config.read("secret_key")
if not secret_key:
secret_key = "".join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
config.write("secret_key", secret_key)
app.secret_key = secret_key
Storage().init()
sockets = socketio.Server()
app.wsgi_app = socketio.Middleware(sockets, app.wsgi_app)
sockets.register_namespace(Backend())
def open_in_browser():
logging.info("Application is starting...")
url = "http://127.0.0.1:%s" % port
while not url_ok(url):
sleep(0.5)
logging.info("Application is available at " + url)
if not app.debug and browser:
webbrowser.open(url)
Thread(target=open_in_browser, daemon=True).start()
app.run(host="0.0.0.0", port=port, threaded=True, use_reloader=False)
except (KeyboardInterrupt, SystemExit):
raise
except:
logging.exception(sys.exc_info()[0])