Python中的twisted,tornado,gevent?
- gevent
Python的并發(fā)框架
代碼看起來好看一些,但是維護比較差,patch沒有規(guī)律,而且里面封裝了C,對python3的支持最差.
- twisted
Python的事件驅動,異步執(zhí)行任務的網(wǎng)絡框架框架
穩(wěn)定性是最好的,但是需要較長時間的學習.對python3的支持較差.
- tornado
Python的web開發(fā)框架
兼容性最好.但是過于簡單了,功能不強,另外沒有python數(shù)據(jù)庫適配器能和tornado無縫對接,因此調用數(shù)據(jù)庫很麻煩,而且只支持web.
tornado見解
tornado雖然是一個異步框架,但是也僅僅是框架而已,他只是實現(xiàn)了get或者post方法相對于返回消息的異步處理,但是畢竟是單進程單線程的,通過一個事件隊列來對所有經(jīng)過了自己事件化的事物做的分片處理,遇到執(zhí)行一個沒有異步化的命令,比如有IO操作的命令(或者耗時的命令),自然框架就無能為力了,雖然他自己實現(xiàn)了一些異步的工具,比如AsyncHttpClient,但是還是太少了,比如訪問數(shù)據(jù)庫的網(wǎng)絡IO,等待數(shù)據(jù)庫返回數(shù)據(jù),向redis請求數(shù)據(jù)等等,絕大部分關鍵的操作其實都是包含了blocking的IO操作的.
gevent見解
gevent可以說實現(xiàn)的比較徹底,他把所有的sockt,disk 的IO操作都做了協(xié)程化處理,所以結合結合到tornado的異步化框架,效果肯定要好不少,特別是那種處理過程中涉及到IO操作頻繁的場景,更為明顯.
twisted見解
他支持很多種協(xié)議,包括UDP,TCP,TLS和其他應用層協(xié)議,這點非常好,開發(fā)人員可以直接只用這些協(xié)議的實現(xiàn).