Python中的twisted,tornado,gevent?
gevent
Python的并发框架
代码看起来好看一些,但是维护比较差,patch没有规律,而且里面封装了C,对python3的支持最差.
twisted
Python的事件驱动,异步执行任务的网络框架框架
稳定性是最好的,但是需要较长时间的学习.对python3的支持较差.
tornado
Python的web开发框架
兼容性最好.但是过于简单了,功能不强,另外没有python数据库适配器能和tornado无缝对接,因此调用数据库很麻烦,而且只支持web.
tornado见解
tornado虽然是一个异步框架,但是也仅仅是框架而已,他只是实现了get或者post方法相对于返回消息的异步处理,但是毕竟是单进程单线程的,通过一个事件队列来对所有经过了自己事件化的事物做的分片处理,遇到执行一个没有异步化的命令,比如有IO操作的命令(或者耗时的命令),自然框架就无能为力了,虽然他自己实现了一些异步的工具,比如AsyncHttpClient,但是还是太少了,比如访问数据库的网络IO,等待数据库返回数据,向redis请求数据等等,绝大部分关键的操作其实都是包含了blocking的IO操作的.
gevent见解
gevent可以说实现的比较彻底,他把所有的sockt,disk 的IO操作都做了协程化处理,所以结合结合到tornado的异步化框架,效果肯定要好不少,特别是那种处理过程中涉及到IO操作频繁的场景,更为明显.
twisted见解
他支持很多种协议,包括UDP,TCP,TLS和其他应用层协议,这点非常好,开发人员可以直接只用这些协议的实现.