You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.1 KiB

"""
应用工厂模块
"""
from fastapi import FastAPI
from app.core.config import config
from app.core.config.cors import configure_cors
from app.core.app.router import register_routers, RouterManager
from app.core.middleware import add_middleware
from app.core.handlers import register_exception_handlers
from app.utils.log import get_enhanced_logger, LogLevel
logger = get_enhanced_logger(__name__, LogLevel.DEBUG)
def create_app(
title: str = "TermControlAgent",
description: str = "终端设备控制平台",
version: str = "1.0.0",
environment: str = "development"
) -> FastAPI:
"""
创建FastAPI应用实例
Args:
title: 应用标题
description: 应用描述
version: 应用版本
environment: 运行环境
Returns:
FastAPI应用实例
"""
try:
logger.info("开始创建FastAPI应用",
title=title,
version=version,
environment=environment)
# 创建FastAPI应用
app = FastAPI(
title=title,
description=description,
version=version,
docs_url="/docs",
redoc_url="/redoc"
)
# 配置CORS
configure_cors(app, environment)
# 注册全局异常处理器
register_exception_handlers(app)
# 添加中间件
add_middleware(app)
# 注册路由
register_routers()
from app.core.app.router import router_manager
router_manager.register_all_routers(app)
# 启动设备监控
@app.on_event("startup")
async def startup_event():
"""应用启动事件"""
logger.info("应用启动,开始初始化服务")
try:
# 启动ADB设备监控
from app.services.enhanced_adb_service import EnhancedAdbService
adb_service = EnhancedAdbService()
await adb_service.start_monitoring()
logger.info("ADB设备监控启动成功")
except Exception as e:
logger.error("启动ADB设备监控失败", error=str(e))
@app.on_event("shutdown")
async def shutdown_event():
"""应用关闭事件"""
logger.info("应用关闭,开始清理资源")
try:
# 停止ADB设备监控
from app.services.enhanced_adb_service import EnhancedAdbService
adb_service = EnhancedAdbService()
await adb_service.stop_monitoring()
logger.info("ADB设备监控已停止")
except Exception as e:
logger.error("停止ADB设备监控失败", error=str(e))
# 添加根路径
@app.get("/")
async def root():
return {
"message": f"{title} {description}",
"version": version,
"environment": environment
}
# 添加健康检查
@app.get("/health")
async def health_check():
return {
"status": "healthy",
"service": title,
"version": version
}
# 添加API信息
@app.get("/api/info")
async def api_info():
return {
"title": title,
"description": description,
"version": version,
"docs_url": "/docs",
"redoc_url": "/redoc"
}
logger.info("FastAPI应用创建成功",
title=title,
version=version,
environment=environment)
return app
except Exception as e:
logger.error("创建FastAPI应用失败", error=str(e))
raise
def create_development_app() -> FastAPI:
"""创建开发环境应用"""
return create_app(environment="development")
def create_production_app() -> FastAPI:
"""创建生产环境应用"""
return create_app(environment="production")