| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from fastapi import FastAPI
- from fastapi.staticfiles import StaticFiles
- from fastapi.middleware.cors import CORSMiddleware
- from contextlib import asynccontextmanager
- from app.core.models_loader import global_models
- from app.routers import search, upload, view
- from app.core.config import settings
- @asynccontextmanager
- async def lifespan(app: FastAPI):
- # 启动时加载模型
- global_models.load_models()
- yield
- # 关闭时清理资源
- pass
- app = FastAPI(title="Pokemon Card Search", lifespan=lifespan)
- app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"],
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- # 挂载静态文件
- app.mount("/static", StaticFiles(directory=settings.STATIC_DIR), name="static")
- # 注册路由
- app.include_router(search.router)
- app.include_router(upload.router)
- app.include_router(view.router)
- if __name__ == "__main__":
- import uvicorn
- uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)
|