超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

async、await 与执行边界

FastAPI 与异步接口开发#Python全栈#第十二阶段#FastAPI 与异步接口开发#async、await 与执行边界约 741 字 · 2 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

协程对象、任务与事件循环分别是什么?

追问 调用 async 函数是否立即完成业务执行?忘记 await 或未安排任务会产生什么现象?

FastAPI 路径操作采用 def 还是 async def,应依据什么选择?

追问 同步数据库驱动与异步 HTTP 客户端各怎样配合?普通 def 路径操作通常怎样被框架执行?

框架是否会把所有普通函数自动送进线程池?

追问 框架管理的路径操作或依赖,与业务代码直接调用的辅助函数为什么需要区分?

在 async 路由中使用 time.sleep 或同步 requests 会有什么影响?

追问 换成 asyncio.sleep、异步客户端或显式移交线程,各适合什么操作?怎样用并发请求验证阻塞现象?

I/O 密集与 CPU 密集任务为什么需要不同方案?

追问 远程请求等待与大量图像计算如何区分?线程、进程和独立任务系统怎样按实际负载选择?

异步操作的超时和取消应怎样处理?

追问 单步超时与整体截止时间有何不同?取消时如何在 finally 中释放资源,为什么不能随意吞掉取消信号?

多个独立异步请求怎样并发执行并收集结果?

追问 gather 与支持版本中的 TaskGroup 在错误和取消处理上有什么不同?某项失败是否等于其他外部副作用也被撤销?

为什么不能无限创建并发任务?

追问 信号量、连接池、队列和任务分批各限制什么?只限制同时运行数量,是否也限制了已创建任务占用的内存?

异步 HTTP 客户端为什么需要合适的复用与关闭方式?

追问 每个请求都新建客户端与按应用生命周期复用有何区别?连接池、超时和事件循环归属怎样核对?

异步锁、线程锁与数据库锁的范围有什么区别?

追问 多个协程、线程和工作进程分别能否受到同一把锁保护?为什么应用内锁不能天然保证跨进程业务唯一性?

核对资料: FastAPI 并发与 async/await。