目前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
不过,你真的需要异步吗? 确保你的瓶颈不在数据库
网友评论