用途:为部署到真实生产流量下的 FastAPI 应用提供工程模式,资料来自故障复盘而非教程,属于有主见的资深工程师评审。
主要能力与模式:1) 应用生命周期使用 lifespan 而非已弃用的 on_event,通过 asynccontextmanager 的 yield 在启动时创建数据库引擎、HTTP 客户端池、日志、缓存、后台调度器,关闭时逆序清理。2) 结构化日志推荐 structlog,生产用 JSONRenderer、开发用 ConsoleRenderer,禁止 print 与 logging.basicConfig;请求 ID 注入必须用纯 ASGI 中间件,不能用 BaseHTTPMiddleware(会破坏 contextvars)。3) 健康检查需两个端点:/health/live 只判断进程存活恒返 200,/health/ready 对每个依赖各加 2 秒超时检查并返回结构化 JSON,全健康 200 否则 503,且从访问日志与鉴权中间件中排除。4) 错误处理采用 RFC 7807 Problem Details,每个响应带 request_id;已知错误返回具体状态码,未知错误统一 500 且绝不暴露 traceback、SQL 或内部路径,并上报 Sentry。5) 中间件顺序为 CORS、安全头、请求 ID、日志,洋葱模型;CORS 禁止通配来源与凭据同时使用;鉴权与限流通常用 Depends 而非中间件。6) Pydantic v2 使用 ConfigDict、Annotated+Field、model_validator 等新 API,外部输入模型开 strict=True,响应模型开 from_attributes=True,设置类需快速失败。7) 异步模式禁止在事件循环中做同步 I/O,所有 I/O 异步并显式超时,多个外部调用用 asyncio.gather 并行。
使用方式:资料提供 templates/ 目录下可复制粘贴的实现,如 logging_config.py、middleware.py、health_checks.py、error_handlers.py;原文含较长代码示例,此处不逐段抄录。
适用场景与限制:适用于需要上生产的 FastAPI 服务;具体版本兼容、依赖安装命令、收费与价格等资料暂未提供,需以仓库实际内容为准。