依赖注入、复用与清理
FastAPI 与异步接口开发#Python全栈#第十二阶段#FastAPI 与异步接口开发#依赖注入、复用与清理约 727 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Depends 解决什么问题,与手动调用辅助函数有什么区别?
追问 参数解析、子依赖、复用和替换怎样协作?哪些业务函数不必为了复用就声明成框架依赖?
怎样用 Annotated 声明可复用依赖类型?
追问 分页参数、当前用户或服务对象如何减少重复签名?注解别名是否等于跨请求共享依赖结果?
子依赖怎样形成依赖图?
追问 读取身份信息、加载用户与检查访问条件如何逐步组合?某层抛出异常后路径操作是否仍应执行?
依赖结果的请求内缓存怎样理解?
追问 同一次请求多处使用同一依赖,与多个请求使用它有什么区别?use_cache=False 适合什么明确需求?
路由、APIRouter 与应用级 dependencies 可以怎样使用?
追问 只执行检查但不需要返回值时怎样声明?全局校验会怎样影响公开路由和文档试调?
同步依赖与异步依赖怎样执行?
追问 框架调用普通 def 依赖与在 async 函数中手动调用同步工具有何不同?为什么异步依赖中仍需避免阻塞调用?
带 yield 的依赖如何安排获取、提供与释放资源?
追问 项目版本支持时,function 与 request scope 怎样影响退出时机?为何流式响应不能使用已提前关闭的资源?
yield 依赖中捕获异常时,应考虑哪些行为?
追问 回滚、关闭和重新抛出怎样组合?吞掉异常可能怎样破坏正确响应或定位信息,清理自身失败又如何处理?
数据库会话依赖是否等于事务边界已经设计完成?
追问 打开与关闭会话、提交与回滚各由谁负责?为什么不能把“响应发出后才提交失败”当作可接受的成功反馈?
依赖注入能否自动解决全局对象的并发安全?
追问 共享客户端、配置、数据库会话和可变缓存各应采用什么生命周期?怎样确认底层对象允许怎样的复用?
核对资料: FastAPI 带 yield 的依赖。