用于 django 应用程序的 websocket 服务器

Posted

技术标签:

【中文标题】用于 django 应用程序的 websocket 服务器【英文标题】:websocket server for django application 【发布时间】:2013-09-01 07:48:26 【问题描述】:

我有一个 django 应用程序需要部署在 Apache HTTP Server 下,我还需要将事件实时推送到客户端的 Web 浏览器。 我对 python 比较陌生,谁能建议一些 websocket 服务器可以在 Python+Django+Apache 中工作?

【问题讨论】:

【参考方案1】:

Django 是一个同步网络服务器。这意味着您不能直接使用 websocket。但是你有多种选择在 Django 中做 websocket。

使用完整的 Python 堆栈来完成: 使用 Tornado 和 Django。你可以关注这个post

使用Nodejs + socket.io + 消息代理:关注这种类型的tutorial

你会发现使用 node.js 和 socket.io 比使用 tornado 有更多的资源来帮助你做到这一点。

【讨论】:

我必须使用的环境是python+django,django可以轻松部署在Tornado上吗?第二个选项似乎更复杂? 第二个选项增加了你的 web 堆栈的复杂性:这意味着添加到 python 中你必须处理 javascript 语言。另外,您将使用消息代理(redis)。这取决于你的需要。如果您更喜欢使用 python,请使用 Tornado。 Tornado 可以毫无问题地运行 Django 服务器。见this link。 谢谢亚历克斯,我现在会去第一个选项试试。我知道 socket.io 应该比 Tornado 表现更好,是这样吗?以后我也会尝试第二个选项。 您建议在生产环境中使用哪个选项?稳定性最重要,性能次之。 好吧。我唯一能说的是socket.io在所有浏览器中都非常好supported;)【参考方案2】:

随着新的更新 (Django 1.10) Django 现在支持 websockets。

请阅读本文了解更多信息:In deep with Django channels - the future of real time apps in Django

【讨论】:

以上是关于用于 django 应用程序的 websocket 服务器的主要内容,如果未能解决你的问题,请参考以下文章

用于后台处理的 Websocket

用于聊天应用程序的多个 websocket 实例

Django 的实时选项(Websockets、flash、轮询)?

Django 信号作为 IPC

关于websocket数据传输

Django、websockets、Tornado,如何让它们通信?