1.异步迭代器
迭代器:内部实现__iter__()和__next__()方法的对象。
可迭代对象:内部实现__iter__()方法,并且可以返回迭代器的对象。
异步迭代器:实现__aiter__()和__anext__()方法的对象。
异步可迭代对象:内部实现__aiter__()方法,并且可以返回迭代器的对象。
![](https://file.jishuzhan.net/article/1786835650159316993/aca67b466185d3eea4febb23b6857e17.webp)
可迭代对象或者迭代器可以被for循环。
async for遍历方式使用时,必须写在协程函数内。
![](https://file.jishuzhan.net/article/1786835650159316993/8d1f422e8d41821f17e4711904728676.webp)
2.异步上下文管理器
上下文管理器:之前做的操作,之后做的操作。
对象中定义__aenter__()和__aexit__()方法来对async with语句中的环境进行控制。该对象支持async with方式拿到该对象。必须嵌套在协程函数中使用。
![](https://file.jishuzhan.net/article/1786835650159316993/d038e4bdc2e834fe5f4d0c571e4f741d.webp)
用法:在操作前打开什么东西,操作后又关闭什么东西。这种场景下使用较多。
一般都是封装好的接口。
3.uvloop补充
是asyncio的事件循环的替代方案。事件循环>默认asyncio的事件循环。
![](https://file.jishuzhan.net/article/1786835650159316993/6018e54eff07e6afa2a39135b0f5cb26.webp)
fastAPI内部使用了uvicorn,所以效率高。也是因为uvicorn内部的事件循环使用的是uvloop所以效率高。