python 的 flask 、django 、tornado 、sanic

时间:2024-04-17 12:25:05

flask

 Flask是由python实现的一个web微框架,让我们可以使用Python语言快速实现一个网站或Web服务

  1. Flask 是轻量级的框架,*,灵活,可扩展性强,核心基于Werkzeug WSGI工具 和jinja2 模板引擎

  2. 适用于做小网站以及web服务的API,开发大型网站无压力,但架构需要自己设计

  3. 与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于Django

django

 Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django

  1. Django走的大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器,给开发者提高了超高的开发效率。 重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择上花费大量时间。

  2. 自带ORM和模板引擎,支持jinja等非官方模板引擎。

  3. 自带ORM使Django和关系型数据库耦合度高,如果要使用非关系型数据库,需要使用第三方库

  4. 自带数据库管理app

  5. 成熟,稳定,开发效率高,相对于FlaskDjango的整体封闭性比较好,适合做企业级网站的开发。python web框架的先驱,第三方库丰富

tornado

Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,请参阅The C10K problem)

  1. Flask 是轻量级的框架,*,灵活,可扩展性强,核心基于Werkzeug WSGI工具 和jinja2 模板引擎

  2. 适用于做小网站以及web服务的API,开发大型网站无压力,但架构需要自己设计

  3. 与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于Django

  4. Tornado 可以承载成千上万的活动连接, 完美的实现了 长连接WebSockets, 和其他对于每一位用户来说需要长连接的程序

sanic

 Sanic 既是一个Python web 服务器,又是一个web框架,它为速度而生。Sanic只支持Python 3.5及其以上版本,允许我们使用async/await语法来使我们的代码非阻塞且快速

 

Python中各自的应用场景?

Django: 主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框架给拆掉自己写socket实现http的通信,底层用纯c,c++写提升效率,ORM框架给干掉,自己编写封装与数据库交互的框架,ORM虽然面向对象来操作数据库,但是它的效率很低,使用外键来联系表与表之间的查询;
 
Flask: 轻量级,主要是用来写接口的一个框架,实现前后端分离,提考开发效率,Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以用NoSQL。
其WSGI工具箱用Werkzeug(路由模块),模板引擎则使用Jinja2,这两个也是Flask框架的核心。
 
Tornado: Tornado是一种Web服务器软件的开源版本。Tornado和现在的主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接因此Tornado是实时Web服务的一个理想框架