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
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")
|