【问题标题】:Python websocket based application framework / server基于 Python websocket 的应用框架/服务器
【发布时间】:2012-12-05 20:38:20
【问题描述】:

我想编写一个基于“云”的应用程序来交互式地开发游戏。多年来,我一直在用 Python 开发应用程序和工具,但到目前为止,它们还没有采用“客户端 服务器”模型。

我不想做任何比较。我想请教专家,哪个工具可以解决这个具体问题

我花了两个多星期的时间寻找合适的解决方案,发现了很多不同的服务器/框架。我是客户端服务器世界的新手,所以我无法判断这些库的真正优势或劣势。

我将大量使用 websockets(服务器端的 Python,客户端的 js),我想选择最好的 Python 服务器/框架。

问题是,哪个python服务器/框架:

  1. 将适用于基于大型云的应用程序开发
  2. 让我可以轻松使用 websockets
  3. 将提供良好的可扩展性 - 我想为很多用户提供服务
  4. 会给我一个很好的、合适的框架来开发这样的应用程序(或者我应该开发我自己的基于像 Tornado 这样的服务器的框架?)
  5. 会很快(基于上述假设)
  6. 将允许我在客户端和服务器之间使用一些基于 websocket 的“rpc”解决方案

我在研究过程中发现的解决方案包括:

【问题讨论】:

  • 在 python 中工作多年,没有客户端-服务器开发? >.>
  • 是的。并非每个项目都基于客户端-服务器逻辑,尤其是在您开发科学工具时。
  • 我可以理解有限的客户端-服务器开发,但是......没有?只是看起来很奇怪。
  • @WojciechDanilo,因为您还没有选择任何答案,您能否回答您自己的帖子并让我们知道您使用了什么解决方案以及为什么?我也在寻找与您的要求几乎相同的 websocket 库。

标签: javascript python frameworks webserver websocket


【解决方案1】:

我经常使用 Tornado 网络服务器和 SockJS 作为灵活的传输层(为不同的浏览器提供 websocket 或“几乎 websocket”功能)。该技术堆栈将解决#2,将成为#4 和#6 的良好基础。但从这个角度来看:

适合大型基于云的应用程序开发提供良好的

可扩展性 - 我想为很多用户提供服务

这些问题只能在某种程度上通过 Python 框架“解决”。如果你真的需要可扩展的实时应用程序,可以很好地与很多用户一起工作,我建议你看看 Erlang/OTP 堆栈。

【讨论】:

  • 由于服务器端的繁重逻辑(我的自定义偏好),我可能会坚持使用 Python。你用的是 Twisted 还是 gevent?我现在正在考虑这 3 个库。
  • 我使用了 Twisted 和恕我直言,它不像我想要的那样 Pythonic :) Gevent 对于其他类型的应用程序很有用,而不是用于控制 websocket 应用程序中的并发状态。
  • 谢谢!我将非常感谢有关 gevent 的更多信息 - 它对什么样的应用程序有用?
【解决方案2】:

如果您只想使用 Python,那么 Twisted 是一个不错的选择。 Django 没有 web sockets 实现,虽然 github 上的项目很少,但仍然不推荐,因为 Django 在 wsgi 上运行。 Tornado 也适用于 websockets。

如果您处于起步阶段并正在探索选项,我强烈建议您使用 Node.js。它非常适合异步事件处理。顾名思义,它的 javascript 不是一些 python 框架。

【讨论】:

  • 我们的服务器应用程序会很复杂,所以我很想用 Python 开发它,而不是 JS。或者你说的是服务器端的一些 JS-Python 绑定?
  • Node.js 与 Python 无关。实际上,Node.js 是最近才出现的基于网络的应用程序。此外,它有一个充满活力的社区开发包,这些包由npm 非常优雅地管理。如果您不在您的项目之间并且即将开始,请看一下。甚至我在中途也从 Python 切换到了 Node.js。 Node.js 是 THE 选项,如果您想要可扩展性并且您的应用程序需要更高的并发性。
【解决方案3】:

我会选择 Autobahn Websockets(基于 Twisted)框架。它有一个干净的实现并且经过了很好的测试(另外它有一个 JS 客户端库)。

【讨论】:

  • 谢谢,您能否提供更多信息,为什么twisted 应该比tornado 或gevent 更好? (我说的是功能和易用性)
  • 我听说 Twisted 学习曲线“几乎是垂直的”,维护大型应用程序是个问题。您能否也详细介绍一下这个话题?
【解决方案4】:

我用的是 pywebsocket ,简单又小...

您可以在此处获取代码 (96 KB):http://code.google.com/p/pywebsocket/

提示:

尝试独立版本而不是 Apache 附加版本

如果您需要 hixie 支持,请在启动服务器时添加 --allow-draft75

【讨论】:

    【解决方案5】:

    你可以试试 http://websockets.readthedocs.io/en/stable/intro.html 我上传了一个使用 Python3.5 的小演示 https://www.youtube.com/watch?v=BgpPm9N338s

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 1970-01-01
      • 2017-11-27
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多