import os from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_jwt_extended import JWTManager from flask_pymongo import PyMongo from .config import Config,config_map from flask_cors import CORS import logging from logging.handlers import RotatingFileHandler db = SQLAlchemy() mongo = PyMongo() jwt = JWTManager() # def create_app(): # app = Flask(__name__) # app.config.from_object(Config) # db.init_app(app) # mongo.init_app(app) # # jwt.init_app(app) # # 注册蓝图 # from .blueprints.auth import auth_bp # from .blueprints.bag_data.routes import data_bp # app.register_blueprint(auth_bp, url_prefix='/api/auth') # app.register_blueprint(data_bp, url_prefix='/api/data') # return app # 加载配置 def create_app(): app = Flask(__name__) # app.config.from_object(Config) config_name = os.environ.get('FLASK_ENV', 'default') app.config.from_object(config_map[config_name]) db.init_app(app) mongo.init_app(app) jwt.init_app(app) setup_logging(app) # 配置日志 # 注册蓝图 from .blueprints.auth.routes import auth_bp from .blueprints.bag_data.routes import data_bp from app.blueprints.data_display.routes import check_data from app.blueprints.data_factory.routes import data_factory_bp from app.blueprints.label_data.rotutes import label_bp from app.blueprints.remote_data.rotutes import remote_bp from app.blueprints.vlm.rotutes import vlm_bp app.register_blueprint(auth_bp, url_prefix='/api/auth') app.register_blueprint(data_bp, url_prefix='/api/data') app.register_blueprint(check_data, url_prefix='/api/inspect') app.register_blueprint(data_factory_bp, url_prefix='/api/factory') app.register_blueprint(label_bp, url_prefix='/api/label') app.register_blueprint(remote_bp, url_prefix='/api/remote') app.register_blueprint(vlm_bp, url_prefix='/api/vlm') CORS(app, supports_credentials=True) return app # 配置日志 def setup_logging(app): # 确保日志目录存在 os.makedirs(app.config['LOG_DIR'], exist_ok=True) # 创建文件处理器 file_handler = RotatingFileHandler( os.path.join(app.config['LOG_DIR'], 'app.log'), maxBytes=app.config['LOG_FILE_MAX_BYTES'], backupCount=app.config['LOG_FILE_BACKUP_COUNT'] ) # 设置日志级别 log_level = getattr(logging, app.config['LOG_LEVEL']) file_handler.setLevel(log_level) app.logger.setLevel(log_level) # 设置日志格式 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) file_handler.setFormatter(formatter) # 添加处理器 if not app.logger.handlers: app.logger.addHandler(file_handler) # 记录启动信息 app.logger.info(f'Application started with config')