Python 并发网络库
Python 并发网络库
Tornado VS Gevent VS Asyncio
- Tornado:并发网络库,同时也是一个 web 微框架
- Gevent:绿色线程(greenlet)实现并发,猴子补丁修改内置 socket
- Asyncio:Python3 内置的并发网络库,基于原生协程
Tornado 框架
Tornado 适用于微服务,实现 Restful 接口
- 底层基于 Linux 多路复用
- 可以通过协程或者回调实现异步编程
- 不过生态不完善,相应的异步框架比如 ORM 不完善
Gevnet
高性能的并发网络库
- 基于轻量级绿色线程(greenlet)实现并发
- 需要主要 monkey patch, gevent 修改了内置的 socket 改为非阻塞
- 配合 gunicorn 和 gevent 部署作为 wsgi server
Asyncio
基于协程实现的内置并发网络库
- Python3 引入到内置库,协程+事件循环
- 生态不够完善,没有大规模生成环境检验
- 目前应用不够广泛,基于 Aiohttp 可以实现一些小的服务