1 缘起
项目需要,
技术选型使用FastAPI。
开发过程中,遇到需要异步操作的场景,
查阅相关FastAPI异步信息的过程中,发现了async和await组合技,
通过阅读官方文档和实际测试,发现,async和await并不是传统意义上的异步(如线程池异步执行任务),
async和await的融合技是应对并发和控制任务流的。
并发:并发地处理请求。
控制任务流:await调用的方法执行结束后,才会执行后面的任务流程,是阻塞的。
2 async和await
2.1 关于async和await
原生文档介绍如下:
感兴趣的小伙伴可详读。
https://fastapi.tiangolo.com/async/#async-and-await
官方给的例子是并发汉堡的故事,过程如下:
- 排队点汉堡
- 获取订单号
- 等待
- 获得汉堡
核心是:异步+阻塞
FastAPI设计的async和await异步和阻塞,我是这样理解的:
异步是多个请求间异步处理,使