环境假设
>= Python 3.5
Linux
优点
- 对异步 IO 任务异常好使
- 编程模型更加简单,负担比较小:
- 利用 asyncio 拿到一个 event loop
- 而后往这个 loop 中塞东西(协程)
- 操做系统看到的仍然是单线程,可是从宏观角度看到的是“多并发”(每一个语言差很少都是这样:在用户态上实现一套多线程模型 )
缺点
- 生态不成熟( 虽然有 aio-libs),要是 requests 这样的库也有对应的实现就行了(流行度也要高)
- 有一个前提假定:一个 App 必须从前到后都是异步的,这对许多历史遗留项目是有负担的
与 gevent + Python 2 对比
- 不少项目都是 Python 2 based,使用 gevent 效果很明显
- 惟一担忧的地方是:gevent 会有不少 patch (hack 标准库),而咱们看到的是一个黑盒子,不免不放心
- gevent 的效率不必定比 asyncio + async def 那一套的效率低哦
(其实我有点粉 gevent,咱们的项目大量使用 gevent,效果还不错,好用为啥不用!)编程
怎么使用
- asyncio 做为咱们的框架(我比较喜欢标准库有的东西),async def/await 做为基本的设计手段
- 多多使用 aio-libs 中的各类 lib (必须从头至尾都异步啊!)