python - 何时使用 Tornado,何时使用 Twisted/Cyclone/GEvent/

哪些框架/库是构建现代多用户 Web 应用程序的最佳选择?我很想拥有一个异步网络服务器,它可以让我轻松扩展。 什么解决方案可以提供最佳性能/可扩展性/最有用的框架(在易用性和易于开发方面)?

如果它能够提供良好的功能(websockets、rpc、流媒体等),那就太好了。

每种解决方案的优缺点是什么?

最佳答案

Django 是一个高级 Python Web 框架,它鼓励快速开发和简洁、实用的设计”。如果您正在构建类似于电子商务网站的东西,那么您可能应该使用 Django。它会让你的工作快速完成。您不必担心太多的技术选择。它提供了从模板引擎到 ORM 所需的一切。对于您构建应用程序的方式,它会有点固执己见,如果您问我,这很好。它拥有所有其他库中最强大的社区,这意味着可以轻松获得帮助。

Flask 是基于 Werkzeug、Jinja 2 和善意的 Python 微框架”。当心 - “微框架”可能会产生误导。这并不意味着 Flask 是一个半生不熟的库。这意味着 flask 的核心非常非常简单。与 Django 不同,它不会为您做出任何技术决策。您可以自由选择任何您喜欢的模板引擎或 ORM。尽管它默认带有 Jinja 模板引擎,但您始终可以自由选择我们自己的模板引擎。据我所知,Flask 在编写 API 端点(RESTful 服务)时非常方便。

Twisted 是用 python 编写的事件驱动网络引擎”。这是一个高性能的引擎。其速度的主要原因是所谓的延迟。 Twisted 建立在 deferred 之上。对于那些不了解延迟的人来说,它是通过异步架构实现的机制。 Twisted 非常快。但不适合编写常规的 webapps。如果你想做一些底层网络的东西,twisted 是你的 friend 。

" Tornado 是 Python Web 框架和异步网络库,最初由 FriendFeed 开发。通过使用非阻塞网络 I/O,Tornado 可以扩展到数万开放连接,使其非常适合长轮询、WebSockets 和其他需要与每个用户建立长期连接的应用程序”。 Tornado 位于 Django 和 Flask 之间。如果你想用 Django 或 Flask 写东西,但如果你需要更好的性能,你可以选择 Tornado。如果架构正确,它可以很好地处理 C10k 问题。

Cyclone 是 Python 的 Web 服务器框架,将 Tornado API 实现为 Twisted 协议(protocol)”。现在,如果您想要一些几乎与 Twisted 一样高性能但易于编写传统 web 应用程序的东西怎么办?向旋风问好。我更喜欢旋风而不是 Tornado 。它有一个与 Tornado 非常相似的 API。事实上,这是 Tornado 的一个分支。但问题是它的社区相对较小。 Alexandre Fiori 是该 repo 的唯一主要提交者。

Pyramid 是一个通用的开源 Python Web 应用程序开发框架。它的主要目标是让 Python 开发人员更轻松地创建 Web 应用程序。” em> 我并没有真正使用过 Pyramid,但我浏览了文档。据我了解,Pyramid 与 Flask 非常相似,我认为您可以在 Flask 看起来合适的任何地方使用 Pyramid,反之亦然。

编辑:欢迎请求审查任何其他框架!

来源:http://dhilipsiva.com/2013/05/19/python-libraries-django-twisted-tornado-flask-cyclone-and-pyramid.html

关于python - 何时使用 Tornado,何时使用 Twisted/Cyclone/GEvent/other,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941903/

相关文章:

linux - 从 URL 执行 bash 脚本

python - 如何在 Python 3.x 和 Python 2.x 中使用 pip

python - 是否可以在列表理解中使用 'else' ?

python - 为什么打印到标准输出这么慢?可以提速吗?

python - 如何将 Pandas 数据添加到现有的 csv 文件中?

python - Django Admin - 更改标题 'Django administratio

linux - 如何在 Bash 中给定超时后杀死子进程?

python - 为什么在 Pylint 认为不正确的条件值中使用 len(SEQUENCE)?

linux - 如何在 Linux 上将所有文件夹和文件重命名为小写?

linux - 在远程 Linux 机器上编译 C++ - "clock skew detected