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

不过,你真的需要异步吗? 确保你的瓶颈不在数据库

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