Sanic是一個相似Flask、僅僅支持Python 3.5+ 版本的web 服務器,旨在運行速度更快。在相似Flask的基礎上,Sanic支持異步請求處理,也就是說,你能夠使用Python 3.5 中全新而又亮眼的 async/await 語法,使你的代碼非阻塞且快速。python
下面是一個最簡單的Sanic Web 程序:mysql
from sanic import Sanic from sanic.response import json app = Sanic() @app.route("/") async def test(request): return json({"hello": "world"}) if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)
以上代碼顯示了Sanic的基本用法:web
若是網站很複雜,路由路徑不少,所有寫在一個文件裏面會比較複雜,這時候能夠使用Blueprint,把不一樣功能寫到不一樣blueprint文件裏面,讓整個代碼結構邏輯更清晰sql
若是你用過tornado,必定對它用類處理請求的方式印象深入,對同一個路由路徑分別處理GET、POST、DETET等請求方式時,只要實現該類的幾個不一樣方法便可,讓整個代碼的邏輯結構更清晰。一樣,Sanic也提供了基於類的處理方式: HTTPMethodView數據庫
Jinja具備快速強大的html模板渲染能力,是不少Python Web框架首選的html模板處理器。Sanic沒有實現本身的模板處理,但能夠把Jinja融入進來: sanic_jinja2json
Web網站常常要同時支持多種語言,這個時候就要遇到國際化處理的問題,這方便也有模塊把Babel集成進來: sanic_babel服務器
小技巧:babel
你針對路由路徑 ‘/product’ 寫了Blueprint bp_product, 但要支持en, zh, jp三種語言路徑,即: /en/product, /zh/product, /jp/product, 你該怎麼作呢?app
在一個循環裏爲每種語言註冊該路徑:
for lang in ['en', 'zh', 'jp']: app.blueprint(bp_product, url_prefix='/%s' % lang)
Sanic是異步處理的框架,讀寫數據庫MySQL固然也要用異步IO的方式,才能體系異步的高效。aiomysql就是基於pymysql實現的異步讀寫MySQL的數據庫模塊,一樣有模塊爲sanic因一波封裝了aiomysql,使得MySQL讀寫更加方便,它就是: sanicdb