Python異步Web

目前Python出現了很多異步的Web框架, 比較出名的有

tornado是老牌的基於事件循環的異步框架,fastapi具備了一些開箱即用的特性,像參數注入,接口文檔
sanic則更像Flask, falcon基於restfull風格的書寫. django作爲python最多企業使用的框架,其異步性能並不高

下面是性能對比: https://github.com/klen/py-frameworks-bench

基本上各個框架使用方式大同小異. 主要還是看異步數據庫等生態.
目前支持PostgreSQL數據庫支持的好,MySQL在Python ORM中沒有其廣

異步的數據庫框架主要有以下幾個

  • async-peewee
  • sqlalchemy
  • Tortoise orm
  • Gino

peewee的作者並不打算支持異步, async-peewee的優勢在於其書寫方式繼承自peewee(peewee在同步orm的世界數一數二),缺點,數據庫遷移不完善, 使用人數不多

sqlalchemy在1.4支持了異步,不過他的異步是基於greenlet, 而且寫法很臃腫難寫,加上2.0版本迭代,sql操作很大變動,其異步實現的也存在一些bug沒有解決 缺點:不穩定, 書寫方式存在諸多寫法

Tortoise的優點是異步實現的完善,連接池,和各大異步web框架都官方帶有集成方式, 缺點可能就是其書寫方式是類似於Django, 並沒有像peewee的書寫優雅

Gino 一個類似提供ORM方式的非ORM框架,基於SQLAlchemy核心

目前推薦的異步fastapi或者sanic, 數據庫orm建議Tortoise或者Gino

舊的同步的建議Flask FastApi + peewee sqlalchemy 或者 Django

不過,你真的需要異步嗎? 確保你的瓶頸不在數據庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章