main.py 1011 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from fastapi import FastAPI
  2. from fastapi.staticfiles import StaticFiles
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from contextlib import asynccontextmanager
  5. from app.core.models_loader import global_models
  6. from app.routers import search, upload, view
  7. from app.core.config import settings
  8. @asynccontextmanager
  9. async def lifespan(app: FastAPI):
  10. # 启动时加载模型
  11. global_models.load_models()
  12. yield
  13. # 关闭时清理资源
  14. pass
  15. app = FastAPI(title="Pokemon Card Search", lifespan=lifespan)
  16. app.add_middleware(
  17. CORSMiddleware,
  18. allow_origins=["*"],
  19. allow_credentials=True,
  20. allow_methods=["*"],
  21. allow_headers=["*"],
  22. )
  23. # 挂载静态文件
  24. app.mount("/static", StaticFiles(directory=settings.STATIC_DIR), name="static")
  25. # 注册路由
  26. app.include_router(search.router)
  27. app.include_router(upload.router)
  28. app.include_router(view.router)
  29. if __name__ == "__main__":
  30. import uvicorn
  31. uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)