Files
hsa/code-server-like/app/__init__.py

52 lines
1.5 KiB
Python

import eventlet
import logging
# 配置 eventlet 日志,抑制 IOClosed 等错误日志
logging.getLogger('eventlet.hubs').setLevel(logging.CRITICAL)
logging.getLogger('eventlet.greenio').setLevel(logging.CRITICAL)
# 进行猴子补丁操作
eventlet.monkey_patch()
# 配置 eventlet hub 以更优雅地处理 IOClosed 错误
try:
from eventlet.hubs import hub
# 保存原始的 handle_error 方法
original_handle_error = hub.Hub.handle_error
def custom_handle_error(self, context, type, value, tb):
# 忽略 IOClosed 错误
if type.__name__ == 'IOClosed' and 'Operation on closed file' in str(value):
return
# 其他错误调用原始方法
original_handle_error(self, context, type, value, tb)
# 替换原始方法
hub.Hub.handle_error = custom_handle_error
except Exception as e:
# 如果修改失败,忽略错误
pass
from flask import Flask
from .views.routes import main_bp
from .views.file import file_bp
from .config import Config
from .extensions import init_extensions,register_namespaces
def create_app():
app = Flask(__name__, template_folder="../templates", static_folder="../static",static_url_path="/vsc-like/static")
app.config.from_object(Config)
@app.route('/')
def hello():
return 'Hello, World!'
# 注册蓝图
app.register_blueprint(main_bp)
app.register_blueprint(file_bp)
# 初始化SocketIO
init_extensions(app)
register_namespaces(app)
return app