浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid
Django 是一个高级的 Python Web 框架,支持快速开发,简洁、实用的设计。如果你正在建一个和电子商务网站相似的应用,那你应该选择用 Django 框架。它能使你快速完成工作,也不必担心太多的技术选择。它能提供从模版引擎到 ORM 所需的一切东西。用 Django 构建你的app 的时候,你必须要遵循 Django 的方式,这点像极了 Ruby on Rails 的 Rails 框架。有些人会觉得这样有点不爽,但在我看来这是极好的,毕竟我坚信:“约定优于机制”。相对于所有其他的库,Django 框架有最强的社区,这意味着可以轻松获得帮助。
Flask 是基于 Werkzeug,Jinja 2 的 Python 轻量级框架(microframework)。注意——“microframework” 里的 “micro” 可能会产生误解。轻量级不意味着 Flask 是一个不成熟、不靠谱的库。它表示 Flask 的核心就是非常非常简单的。不像 Django 框架,它不会给你带来技术选择上的问题,你可以自由选择你喜欢的任何模版引擎或 ORM。即使它默认配备了 Jinja 模板引擎,你也随时可以自由选择。 在我看来,用 Flask 来编写 API 服务(RESTful rervices)是再好不过的。
Twisted 是用 Python 实现的基于事件驱动的网络引擎框架。它是一个高性能的引擎,其快速的主要原因是一个被称为 deferred 的 object,Twisted 是建立在 deferred object 之上。对于不了解 deferred object 的人来说,deferred object 是通过异步架构实现的机制。Twisted 是很快速的,但是不适合编写常规的 WebApps。如果你想做一些底层网络的东西,Twisted 是你的好帮手。
Tornado 是一个 Python Web 框架和异步网络库,最初是由 FriendFeed 开发的。Tornado 采用非阻塞网络 I / O 模型,可以处理数以千计的网络连接,这意味着对于 long polling 、WebSockets 和其他需要长时间实时连接的 apps 来说,Tornado 是一个理想的 Web 框架。Tornado 介于 Django 和 Flask 之间。如果你想要用 Django 或 Flask 写一些东西,但你想要一个更好的性能,你应该选择用 Tornado 框架。配合上合理的架构,它能很好的处理 C10K 问题。
Cyclone 是用 Python 编写的一款异步非阻塞的轻量级 Web Server 框架。它实现了 Tornado的 API,底层实现是基于 Twisted Protocol 的。现在,如果你想要 Twisted 的性能和易于编写常规的 webapps,那么请选择 Cyclone。相对于 Tornado 框架,我更喜欢 Cyclone。它有一个非常类似于 Tornado 的 API,实际上,它是 Tornado 的一个 fork 分支。但是问题就是它拥有的社区相对较小。Alexandre Fiori 是主要代码贡献者。
Pyramid 是一个通用的,开源的 Python web 应用开发框架。其主要目标就是让 Python 开发人员更轻松的开发 web 应用程序。我没有用过 Pyramid 框架,但是我看过它的文档。据我了解,Pyramind 和 Flask 很相似,我认为可以用 Flask 框架的地方也可以用 Pyramid 框架,反之亦然。
原文地址:dhilipsiva
浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid的更多相关文章
- 浅谈Python web框架
一.Python web框架 Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全 ...
- [转]浅谈Python web框架
说到web framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见:http://wi ...
- 浅谈python web框架django2.x
1.Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种.许多成功的网站和APP都基于Django. Django是一个开源的Web应用框架,由Python写成. ...
- 浅谈python web框架中的orm设计
看了一下廖雪峰的那个web框架,其实就是封装了web.py,请求使用异步并将aiomysql做为MySQL数据库提供了异步IO的驱动,前端部分则整合了jinja.其中最难的应该是orm部分了. 下面是 ...
- 浅谈Python Web的五大框架
说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界.各种micro-framework.framework不可胜数. 尽管还有一大脚本语言PHP也有 ...
- python web框架 django wsgi 理论
django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可以了django只是web框架 他也不负责写soc ...
- python web框架 Django进阶
django 进阶 基础中,一些操作都是手动创建连接的非主流操作,这样显得太low,当然也是为了熟悉这个框架! 实际中,django自带连接数据库和创建app的机制,同时还有更完善的路由系统机制.既然 ...
- python web框架(bottle,flask,tornado)
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...
- python web框架Django入门
Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...
随机推荐
- I2C controller core之Bit controller(04)
4) detect start/stop condition START- falling edge on SDA while SCL is high; STOP - rising edge on ...
- react基础篇五
再看JSX 本质上来讲,JSX 只是为 React.createElement(component, props, ...children) 方法提供的语法糖.比如下面的代码: <MyButto ...
- UNIX SOCKET编程简介
1 . Layered Model of Networking Socket 编程的层次模型如下图所示, 最上面是应用层,应用层下面的是 SOCKET API 层,再下面是传输层和网络层 ...
- XML-20100: (Fatal Error) Expected ';'. xml转word 导出时异常
因为数据中包含特殊字符.需要进行转译. < < 小于号 > > 大于号 & & 和 ' ’ 单引号 " " 双引号 XML ...
- LINUX命令行如何查看memcache运行状态
(附加)如何查看memcache服务器端版本: ./memcached -h memcache的运行状态可以方便的用 stats 命令显示. 首先用telnet 127.0.0.1 11211这样 ...
- 阿里云服务器centos7环境下安装xampp后,mysql有进程,但是却没有监听3306端口
配置阿里云服务器centos7中xampp环境时出现了一种情况: 在centos中可以使用命令进入mysql 修改后也可以远程用phpmyadmin连接mysql 但是用navicat却无法连接 先修 ...
- POJ 3126 Prime Path (BFS + 素数筛)
链接 : Here! 思路 : 素数表 + BFS, 对于每个数字来说, 有四个替换位置, 每个替换位置有10种方案(对于最高位只有9种), 因此直接用 BFS 搜索目标状态即可. 搜索的空间也不大. ...
- PY简易爬虫
然而,实用性很差,仅仅是能用而已. 已知bug: 由于土啬的问题,经常会炸掉.网络不稳定导致各种Connection Aborted/SSLError: EOF occurred in violati ...
- Java异常以及继承的一些问题
Java异常以及继承的一些问题 http://blog.csdn.net/hguisu/article/details/6155636 https://www.cnblogs.com/skywang1 ...
- 自定义UEditor右键菜单
//打开右键菜单功能 ,enableContextMenu: true //右键菜单的内容,label留空支持国际化,否则以此配置为准 //,contextMenu:[ // { // label:' ...