init
This commit is contained in:
71
app.py
Normal file
71
app.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from flask import Flask
|
||||
from flask_login import LoginManager
|
||||
from config import Config
|
||||
import redis
|
||||
|
||||
login_manager = LoginManager()
|
||||
redis_client = None
|
||||
|
||||
def create_app():
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(Config)
|
||||
|
||||
# 导入并初始化 db
|
||||
from models import db
|
||||
db.init_app(app)
|
||||
|
||||
# 初始化登录管理器
|
||||
login_manager.init_app(app)
|
||||
login_manager.login_view = 'auth.login'
|
||||
|
||||
# 用户加载器
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
from models import User
|
||||
return User.query.get(int(user_id))
|
||||
|
||||
# 初始化Redis
|
||||
global redis_client
|
||||
try:
|
||||
redis_client = redis.Redis(
|
||||
host=app.config['REDIS_HOST'],
|
||||
port=app.config['REDIS_PORT'],
|
||||
db=app.config['REDIS_DB'],
|
||||
password=app.config['REDIS_PASSWORD'],
|
||||
decode_responses=True
|
||||
)
|
||||
# 测试连接
|
||||
redis_client.ping()
|
||||
print("[OK] Redis连接成功")
|
||||
except Exception as e:
|
||||
print(f"[ERROR] Redis连接失败: {e}")
|
||||
print("提示: 请确保Redis服务已启动")
|
||||
redis_client = None
|
||||
|
||||
# 注册蓝图
|
||||
from routes.auth import auth_bp
|
||||
from routes.parser import parser_bp
|
||||
from routes.admin import admin_bp
|
||||
from routes.main import main_bp
|
||||
|
||||
app.register_blueprint(auth_bp, url_prefix='/auth')
|
||||
app.register_blueprint(parser_bp, url_prefix='/api')
|
||||
app.register_blueprint(admin_bp, url_prefix='/admin')
|
||||
app.register_blueprint(main_bp)
|
||||
|
||||
# 初始化定时任务(仅在非调试模式或主进程中启动)
|
||||
# 注意:初始化脚本运行时不启动调度器
|
||||
import os
|
||||
if os.environ.get('SKIP_SCHEDULER') != 'true':
|
||||
if not app.debug or os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
|
||||
try:
|
||||
from scheduler import init_scheduler
|
||||
init_scheduler(app)
|
||||
except Exception as e:
|
||||
print(f"定时任务启动失败: {e}")
|
||||
|
||||
return app
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = create_app()
|
||||
app.run(debug=True, host='0.0.0.0', port=5000)
|
||||
Reference in New Issue
Block a user