想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post .
关闭 8 年前。
哪些框架/库是构建现代多用户 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/