gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:24:34 25 4
gpt4 key购买 nike

可以作为 python 包安装的 django 有哪些实时“推送”选项?我想避免做一些事情,比如安装独立的实时网络服务器。

本质上,我正在寻找类似 pusher.com(云系统)或 this socket.io build 的东西用于聊天和其他各种推送操作的 django(具有构建状态:失败)。

有人建议猿here , 但它似乎要求您将 Ape 设置为服务器。如果要求不高,是否有任何内置于 django 中的解决方案?

最佳答案

自撰写答案之日起(2012 年);发生了很多变化。

现在进行系统实时更新的首选方法是使用 websockets;正在正式化并作为标准提出 RFC 6455 . This page on MDN对这项技术有很好的概述。

另一项新兴技术是 Server Sent Events这是一个 W3C draft proposal .

项目如swampdragondjango-socketio使在您的项目中更轻松地集成实时功能。


任何实时系统都有两个主要组件:

  1. 从浏览器到服务器保持打开状态的连接。
  2. 监听此连接然后响应的服务器。
  3. 用于存储消息和接收消息通知的系统/标准。

好吧,也许三个组成部分。

由于 django 不能实时工作,任何提供实时推送/更新的解决方案都需要另一个服务器/服务来接受消息,然后通知听众未决消息。

Django 将是在 channel (队列/桶)上将消息推送(写入)到此服务器的应用程序。听众然后订阅一个 channel 以接收消息通知。由于连接保持打开状态;消息是“实时”检索的。

Django 在这一切中的作用微乎其微。有各种实现提供实时通知工作所需的三个组件。

我很喜欢juggernaut因为它的设置非常简单,并且使用的 node.js 在服务器端组件方面不需要太多。我更喜欢它的另一个原因是因为除了 WebSocket 之外,它还支持 Adob​​e Flash Socket(以及其他,请参见链接)。

访问它的 api 也非常简单 - 事实上,如果您已经在使用 redis(自从它的 so easy to use 以来您真的应该这样做),您不需要其他 API,因为您可以将消息发送到 redis,而主宰者将阅读它们,或者您可以使用它的 Python API。 flask snippet 中的一个简单示例:

向 channel 发送(写入)消息:

>>> from juggernaut import Juggernaut
>>> jug = Juggernaut()
>>> jug.publish('channel', 'The message')

听一下:

<script type=text/javascript
src=http://localhost:8080/application.js></script>
<script type=text/javascript>
var jug = new Juggernaut();
jug.subscribe('channel', function(data) {
alert('Got message: ' + data);
});
</script>

关于python - Django 的实时选项(Websockets、flash、轮询)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com