main.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from contextlib import asynccontextmanager
  2. from fastapi import FastAPI
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from app.api.v1 import documents, export, export_records
  5. from app.core.exceptions import register_exception_handlers
  6. from app.services.storage_monitor import start_background_monitor
  7. @asynccontextmanager
  8. async def lifespan(app: FastAPI):
  9. # 启动后台磁盘监控(每 30 分钟检查一次)
  10. monitor_task = start_background_monitor()
  11. yield
  12. # 关闭时取消后台任务
  13. monitor_task.cancel()
  14. def create_app() -> FastAPI:
  15. app = FastAPI(
  16. title="Axonix Text Editor API",
  17. version="0.1.0",
  18. description="文本编辑器后端 API —— 阶段 0:文档 CRUD + 导出下载",
  19. lifespan=lifespan,
  20. )
  21. # CORS(开发阶段放开,生产按需收紧)
  22. app.add_middleware(
  23. CORSMiddleware,
  24. allow_origins=["*"],
  25. allow_credentials=True,
  26. allow_methods=["*"],
  27. allow_headers=["*"],
  28. )
  29. # 全局异常处理
  30. register_exception_handlers(app)
  31. # 路由注册
  32. app.include_router(documents.router, prefix="/api/v1")
  33. app.include_router(export.router, prefix="/api/v1")
  34. app.include_router(export_records.router, prefix="/api/v1")
  35. return app
  36. app = create_app()