Python語言近年來人氣爆棚。它普遍應用於網絡開發運營,數據科學,網絡開發,以及網絡安全問題中。python
然而,Python在速度上徹底沒有優點可言。mysql
在速度上,Java如何同C,C++,C#或者Python相比較?答案几乎徹底取決於要運行的應用。在這個問題上,沒有完美的評判標準,然而The Computer Language Benchmarks Game 是一個不錯的方法。golang
我想要回答這樣一個問題:當運行同一個程序時,爲何Python會 比其餘語言慢2到10倍?爲何咱們沒法將它變得更快?redis
今天,咱們不糾結以上哪一種緣由對性能影響最大,而是來談談當下Python3.7中,咱們有怎樣的方法讓他變得比想象中的快,並且快不少sql
Python在3.5版本中引入了關於協程的語法糖async和await,這意味着咱們可使用協程的方式來編寫Python應用程序,這會讓咱們的Python代碼像Node同樣,讓他變成異步方式運行數據庫
固然,這並非咱們今天的目標安全
在衆多的Web框架中,Django、Tornado、Flask已經相對成熟,Tornado等框架也能夠進行異步方式的選擇,但今天咱們都不講網絡
咱們要講的是當下比較強悍的 Sanic
session
爲何要講Sanic,我想最主要的的緣由是他足夠快,並且能夠進行快速構建,他寫起來相似Flask,口說無憑,看圖框架
這是官方提供的 基準測試結果
Sanic的開發者說他們的靈感來自於這篇文章 uvloop: Blazing fast Python networking
快(爽)到起飛
構建速度快
原生支持 async/await 語法
社區慢慢活躍,相比以前的不成熟慢慢出現一些優秀的插件
自動分配&管理進程
只是簡單說一下感覺,今天的目的不是爲了教你們如何使用Sanic,而是但願更多的人加入Sanic,體驗到Sanic以及更多優秀的框架的出現帶給咱們的便捷
說了這麼多,還有一個問題,個人Web使用了協程,那麼意味着我在操做數據庫時,使用常規的pymysql以及psycopg2會阻塞咱們的線程,咱們的Web服務再快,卡在數據庫也是徒勞,那麼接下來爲你們帶來一些我經常使用的協程支持庫
這是我平時用的比較多的一些庫,我的喜愛pg,至於mysql等其餘數據庫,你們能夠自行搜索
Sanic問世以來,我已經利用它構建過大大小小的Web應用程序,包括他日益完善的社區以及各方面的支持,例如sanic_session等庫的出現,讓他再也不顯得那麼吃力,讓他再也不面對大型生產環境而無能爲力,到目前爲止我一直在熱衷於探索他的小插件,若是大家有更好的Sanic支持,請留言
我會抽時間將Sanic以及全家桶的教程更新在下方,若是懶,懶,懶的看官方文檔,就等我(大哥)更新吧!