Tornado 和 asyncio

Tornado LOGO

Python 的原生协程框架 asyncio 已经比较成熟了,生态也在逐步形成。
感觉现在的 asyncio 就像是吸收了 Tornado 之前的很多设计,只不过不依赖 epoll,其底层也同样是基于 epoll(selectors.DefaultSelector())。
经过很多版本的迭代,Tornado 已经默认使用 asyncio,原来依赖 epoll 的事件循环组件 ioloop 变成可选项。

现在代码中大量 async/await,直接 return,也不需要之前的 raise gen.Result(xxx) 了。

所以,现在除了提供一个轻量级 web 框架之外,现在 Tornado 存在只剩这点意义了:

  1. 屏蔽可能的底层 API变动;
  2. 支持切换其他的事件循环。
  3. 其他小细节,比如屏蔽 asyncio、生成器协程、concurrent.futures.Future 的差异
  4. AsyncHTTPClient