2-Django、Flask和Tornado三大主流框架对比

在Python的web开发框架中,目前使用量最高的几个是DjangoFlaskTornado, 经常会有人拿这几个对比,相信大家的初步印象应该是 Django大而全、Flask小而精、Tornado性能高。

了解常用框架

Django

主要特点是大而全,集成了很多组件,例如: ModelAdminForm 等等, 不管你用得到用不到,反正它全都有,属于全能型框架

  • 优点

    • Django上手也比较容易,开发文档详细、完善,相关资料丰富
    • Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
    • Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja
    • Django目前支持Jinja等非官方模板引擎
    • Django自带的数据库管理app好评如潮
    • Django非常适合企业级网站的开发:快速、靠谱、稳定
    • Django成熟、稳定、完善,但相比于FlaskDjango的整体生态相对封闭
    • DjangoPython web框架的先驱,用户多,第三方库最丰富
  • 缺点

    • Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高
    • Django能开发小应用,但总会有"杀鸡焉用牛刀"的感觉
    • Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDBNoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山
Flask

主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架

  • 优点
    • Flask确实很"轻",不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过
    • Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python
    • 入门简单,即便没有多少web开发经验,也能很快做出网站
    • 非常适用于小型网站
    • 非常适用于开发web服务的API
    • 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
    • 各方面性能均等于或优于Django
    • Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库
    • Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一
    • Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
    • FlaskDjango更加Pythonic,与Pythonphilosophy更加吻合
  • 缺点
    • 对于大型网站开发,需要设计路由映射的规则,否则导致代码混乱
Torando

主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架

  • 优点

    • 少而精(轻量级框架)
    • 注重性能优越,速度快
    • 解决高并发(请求处理是基于回调的非阻塞调用)
    • 异步非阻塞
    • websockets 长连接
    • 内嵌了HTTP服务器
    • 单线程的异步网络程序,默认启动时根据CPU数量运行多个实例;利用CPU多核的优势
    • 自定义模块
  • 缺点

    • 模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块

2. Tornado VS Django VS Flask

Tornado性能比DjangoFlask高很多

  • 底层io处理机制:

Tornadogeventasyncioaiohttp:自带异步特性,底层使用的是事件循环+协程NodejsGo语言都得益于协程轻松实现了高并发。因为Tornado内置了自己的HTTPServer, 运行和部署它与其他Python web框架不 太一样

DjangoFlask: 传统的模型,同步框架,阻塞io模型。api写同步代码,使用celery /apscheduler处理异步任务。python 传统的这种 wsgi 模型,主要是为了方便框架开发者只需要专注框架层面,而非 http 处理层面。但这样却增加了服务部署的复杂度,需要同时部署和配置 http server wsgi server ,如果想支持异步还要部署 worker

  • 性能:

最基本的 json 的序列化:DjangoFlask 占优

处理远程 http 请求的能力:Tornado 占绝对优势

数据库与模板处理性能:TornadoFlask 旗鼓相当,Django 饱受诟病的地方就是 Django ORM 确实很慢,Django 的开发效率与维护非常棒,然而 Django ORM 深度绑定了该框架,如果你需要把 Django ORM 换成其它轮子,那么也意味着 Django 的诸多优秀特性将从此告别

相关推荐
向上的车轮1 小时前
Django学习笔记五:templates使用详解
笔记·学习·django
向上的车轮4 小时前
Django学习笔记十一:部署程序
笔记·学习·django
一眼万里*e17 小时前
fish-speech语音大模型本地部署
python·flask·大模型
暮毅19 小时前
Django对接支付宝沙箱环境(2024年9月新测有效)
数据库·django
yz_518 Nemo20 小时前
django的路由分发
后端·python·django
向上的车轮21 小时前
Django学习笔记八:发布RESTful API
笔记·学习·django
向上的车轮21 小时前
Django学习笔记九:RESTAPI添加用户认证和授权
笔记·学习·django
拾伍廿肆1 天前
python - websocket
python·websocket·django
叫我DPT2 天前
Flask-3
python·flask
dotdotyy2 天前
调用智谱AI,面试小助手Flask简单示例
人工智能·面试·flask