题主特意询问了 Pylons 如何?那么我们就首先来说说 Pylons 吧!Pylons:一个开放源代码的 Web 应用框架,使用 python 语言编写。它对 WSGI 标准进行了扩展应用,提升了重用性且将功能分割到独立的模块中。Pylons 和 Django 的设计理念完全不同,Pylons 本身只有两千行左右的 Python 代码,不过它还附带有一些几乎就是 Pylons 御用的第三方模块。Pylons 只提供一个架子和可选方案,你可以根据自己的喜好自由的选择Template、ORM、form、auth等组件,系统高度可 定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说 Pylons 就是一个用胶水语言设计的胶水框架。

选择 Pylons 多是选择了它的自由,选择了自由的同时也预示着你选择了噩梦:

Pylons 依赖于许多第三方库,它们并不是 Pylons 造,你学 Pylons 的同时还得学这些库怎么使用,关键有些时候你都不知道你要学什么。Pylons 的学习曲线相对比 Django 要高的多,而之前 Pylons 的官方文档也一直是人批评的对象,好在后来出了 The Definitive Guide to Pylons 这本书,这一局面有所改观。因为这个原因,Pylons 一度被誉为只适合高手使用的 Python 框架。

因为牵涉到的模块多,一旦有错误发生就比较难定位问题处在哪里。可能是你写的程序的错、也可能是 Pylons 出错了、再或是 SQLAlchemy 出错了、搞不好是 formencode 有bug,反正很凌乱了。这个只有用的很熟了才能解决这个问题。

接着,我们谈谈目前较为主流的两大框架。Django 和 Flask。Django:一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。Django与其他框架比较,它有个比较独特的特性,支持orm,将数据库的操作封装成为python,对于需要适用多种数据库的应用来说是个比较好的特性。不过这种特性,已经有其他库完成了,sqlalchemy.

Flask:一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。对于初学者,推荐学习以上两个框架。因为相对来说比较简单而且相对大众,能够找到的各种学习资料也比较齐全。Tornado:一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。

web.py :一个轻量级 Python web 框架,它简单而且功能强大。web.py 是一个开源项目。该框架由已故美国作家、Reddit 联合创始人、RSS 规格合作创造者、著名计算机黑客Aaron Swartz 开发。web.py 目前已被很多家大型网站所使用。web.py 简单易学,只要有Python基础,掌握 web.py 就非常容易。

Aiohttp:高性能异步web框架,既有客户端的也有服务端的,还支持web-socket。

Sanic :一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快。除了Flask之外,Sanic还支持异步请求处理程序。这意味着你可以使用Python 3.5中新的闪亮的异步/等待语法,使你的代码非阻塞和快速。此框架目前也较为小众,针对该框架实验楼曾经制作过《异步 Web 框架 Sanic 设计与实现》详细讲解过该框架的实现。

Vibora:旨在成为最快的python web框架。vibora的高性能依赖于 cython实现的uvloop异步框架及cython实现的http_parser, 再加上一些cython构建的web组件,比如 模板,user-route等。目前还处于测试阶段。

Bottle :一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

Falcon :一个构建云API的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐