-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.py
More file actions
88 lines (76 loc) · 3.41 KB
/
Copy pathapp.py
File metadata and controls
88 lines (76 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os
import sys
import logging # 添加logging导入
# 配置日志输出到标准输出,这样Docker可以捕获日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[logging.StreamHandler(sys.stdout)]
)
from flask import Flask
from flask_cors import CORS
from flask_session import Session
from flask_login import LoginManager
from dotenv import load_dotenv
from cachelib import FileSystemCache
from services.ai_model_service import AIModelCache
# 添加项目根目录到Python路径
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
# 强制重新加载 .env 文件
load_dotenv(override=True)
def create_app():
app = Flask(__name__)
CORS(app)
app.config.from_object('config.Config')
app.config['SESSION_TYPE'] = 'filesystem' # 使用文件系统来存储 session 数据
app.config['SESSION_CACHE'] = FileSystemCache('./flask_session/', threshold=500, mode=0o600)
app.config['SESSION_PERMANENT'] = True # 设置为 True 使 session 持久化
app.config['PERMANENT_SESSION_LIFETIME'] = 31 * 24 * 60 * 60 # 设置 session 有效期为31天
app.config['SESSION_KEY_PREFIX'] = 'myapp_' # session 数据前缀
# 初始化 session
Session(app)
# 初始化 LoginManager
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'auth.login' # 设置登录视图的端点
login_manager.login_message = '请先登录' # 设置登录提示消息
@login_manager.user_loader
def load_user(user_id):
# 仅使用会话中的外部用户信息,不再兼容本地用户表
from models.session_user import SessionUser
from flask import session as flask_session
ext_user = flask_session.get('ext_user')
if ext_user:
return SessionUser.from_dict(ext_user)
return None
with app.app_context():
try:
AIModelCache.initialize()
ai_models = AIModelCache.get_all()
app.config['AI_MODEL_CACHE'] = ai_models
app.logger.info("AI 模型缓存已加载,共 %d 条记录", len(ai_models))
except Exception as exc:
app.logger.exception("AI 模型缓存初始化失败: %s", exc)
raise
from routes import main_bp, translate_bp, md2all_bp, speech2text_bp, article_bp, test_bp, wechat_bp, starbot_bp, scheduler_bp, life_bp, word_plugin_bp, auth_bp, fun_bp, text2speech_bp, wechat_sub_account_bp, lighthouse_bp, html2pic_bp
app.register_blueprint(main_bp)
app.register_blueprint(translate_bp)
app.register_blueprint(md2all_bp)
app.register_blueprint(speech2text_bp)
app.register_blueprint(article_bp)
app.register_blueprint(test_bp)
app.register_blueprint(wechat_bp)
app.register_blueprint(starbot_bp)
app.register_blueprint(scheduler_bp)
app.register_blueprint(life_bp)
app.register_blueprint(word_plugin_bp)
app.register_blueprint(auth_bp) # 注册认证蓝图
app.register_blueprint(fun_bp) # 注册娱乐蓝图
app.register_blueprint(text2speech_bp)
app.register_blueprint(wechat_sub_account_bp)
app.register_blueprint(lighthouse_bp) # 注册lighthouse蓝图
app.register_blueprint(html2pic_bp) # 注册html2pic蓝图
return app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)