Python 的原生协程框架 asyncio
已经比较成熟了,生态也在逐步形成。
感觉现在的 asyncio
就像是吸收了 Tornado 之前的很多设计,只不过不依赖 epoll,其底层也同样是基于 epoll(selectors.DefaultSelector()
)。
经过很多版本的迭代,Tornado 已经默认使用 asyncio
,原来依赖 epoll 的事件循环组件 ioloop
变成可选项。
现在代码中大量 async
/await
,直接 return
,也不需要之前的 raise gen.Result(xxx)
了。
所以,现在除了提供一个轻量级 web 框架之外,现在 Tornado 存在只剩这点意义了:
- 屏蔽可能的底层 API变动;
- 支持切换其他的事件循环。
- 其他小细节,比如屏蔽 asyncio、生成器协程、
concurrent.futures.Future
的差异 AsyncHTTPClient