应用生命周期、后台任务与流式处理
FastAPI 与异步接口开发#Python全栈#第十二阶段#FastAPI 与异步接口开发#应用生命周期、后台任务与流式处理约 773 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
lifespan 怎样组织应用启动和关闭?
追问 异步上下文管理器中的 yield 前后分别做什么?客户端、连接池和模型加载怎样按生命周期创建与释放?
启动初始化失败时,服务应怎样反馈与清理?
追问 多个资源依次建立时,后续失败如何释放前面已成功的资源?为什么不能把初始化错误全部忽略后照常提供业务接口?
app.state 与 request.state 各适合保存什么?
追问 应用共享客户端与单次请求标识怎样区分?状态容器是否天然提供类型校验、并发保护或跨进程共享?
应用级资源与请求级资源应怎样选择?
追问 配置、HTTP 客户端、数据库会话和当前用户各适合什么范围?为什么“复用”不能等同于所有对象都全局共用?
BackgroundTasks 适合哪些响应后的轻量工作?
追问 它在什么进程中执行?进程退出、任务失败和可靠重试方面,为什么不同于持久任务队列?
后台任务为什么不宜直接依赖请求的临时资源?
追问 上传文件、请求体和数据库会话在任务执行时是否仍可用?怎样传入已保存文件的标识或重新获取独立资源?
后台任务使用 def 与 async def 有什么执行区别?
追问 阻塞 I/O 和大量计算怎样影响线程池或事件循环?为什么“响应已返回”不意味着后台工作不影响其他请求?
长时间任务怎样与接口的接受、查询和结果反馈衔接?
追问 任务标识、状态、失败和幂等怎样约定?为什么裸 create_task 不能替代对持久化和恢复有要求的任务系统?
存活检查与就绪检查应该怎样区分?
追问 进程可响应、必要资源已初始化与外部依赖可用分别说明什么?为什么不宜每次探测都执行昂贵完整业务流程?
流式发送时,慢客户端与连接中断会怎样影响资源?
追问 分块生成、背压、取消和 finally 清理怎样协调?为何不能无限提前生成数据并假设客户端一定全部接收?
核对资料: FastAPI lifespan、FastAPI 后台任务。