FASTAPI工程自检

  1. 关键路径是否明确:请求链路里最慢的 1–3 个步骤分别是什么(DB/网络/模型/磁盘)?有指标或日志能证明吗?
  2. 超时与重试是否完整:所有外部依赖(DB/HTTP/OSS/消息队列)是否设置了超时、重试策略与退避(并有上限)?
  3. 资源池是否正确配置:数据库连接池 / HTTP 连接池 / 线程池是否启用?池大小、队列长度、回收策略是否与并发量匹配?
  4. 数据库连接方式是否一致:是否统一通过配置(DSN/环境变量)管理连接参数?是否区分读写、是否有连接健康检查与断线重连策略?
  5. 负载类型是否判断正确:当前服务主要是 IO 密集还是 CPU 密集?对应采用 async / 线程池 / 多进程 / 任务队列的组合是否合理?
  6. 并发模型是否清晰:进程数、线程数、协程数、worker 数分别是多少?谁负责 CPU、谁负责 IO?是否存在“重复并发”(多层叠加导致过载)?
  7. 队列/Worker Pool 是否可控:是否有最大并发、最大排队、任务超时、任务取消/幂等、失败重试与死信/告警机制?
  8. 数据库查询是否可规模化:是否存在 N+1、无索引全表扫、分页深翻、排序无索引等问题?关键 SQL 是否可 explain 并持续监控?
  9. 写入一致性与幂等:创建/更新接口是否有幂等键或唯一约束?重复请求是否会写出脏数据/重复数据?
  10. 文件/对象存储写入是否安全:OSS 路径是否全局唯一(避免同名覆盖)?是否采用“临时对象 + 原子重命名/版本化”或“内容哈希命名”?
  11. 数据校验与安全边界:入参是否做了 schema 校验、大小限制、类型限制?上传是否限制格式/体积/数量并防止 zip bomb 等风险?
  12. 密码与密钥是否合规:密码是否使用强哈希(bcrypt/argon2),并有合适 cost;密钥是否只从安全配置读取且不落日志?
  13. 时间处理是否一致:时间统一用 UTC 还是 epoch;是否避免使用已弃用/易混淆的 API(如某些 utcnow 用法)并确保时区语义明确?
  14. API 生命周期是否健康:是否避免使用已弃用的框架钩子/接口(例如 FastAPI 的老式事件钩子),并跟随框架推荐方式实现启动/关闭?
  15. 错误处理是否可运营:异常是否分级(4xx/5xx)、是否有可追踪的错误码、是否避免吞错;关键失败是否告警?
  16. 日志/追踪/指标是否闭环:是否有 request_id/trace_id;是否有 QPS、延迟分位数、错误率、DB/队列/worker 指标;能否快速定位瓶颈?
  17. 限流与熔断是否存在:对高成本路径(模型推理/大文件/外部依赖)是否有并发阈值、排队策略、熔断降级与保护开关?
  18. 部署与回滚是否可靠:配置是否可回滚;迁移是否可逆/可灰度;是否有健康检查、优雅停机与连接耗尽策略?