from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.v1.router import api_router from app.core.config import get_settings from app.core.logging import configure_logging, setup_request_logging @asynccontextmanager async def _lifespan(app: FastAPI): # 启动算力状态轮询线程(同步派发到算力的训练任务状态/日志/指标) from app.modules.fine_tune.service import start_compute_sync_worker, stop_compute_sync_worker start_compute_sync_worker() yield stop_compute_sync_worker() def create_app() -> FastAPI: settings = get_settings() configure_logging(settings) app = FastAPI(title=settings.app_name, lifespan=_lifespan) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_allow_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) setup_request_logging(app) app.include_router(api_router, prefix=settings.route_prefix) return app app = create_app()