Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django的实时选项(WebSocket、flash、轮询)?_Python_Django_Websocket_Real Time - Fatal编程技术网

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

Python Django的实时选项(WebSocket、flash、轮询)?,python,django,websocket,real-time,Python,Django,Websocket,Real Time,django有哪些实时“推送”选项可以作为python包安装?我想避免像实时安装独立的web服务器这样的事情 本质上,我正在寻找类似pusher.com(云系统)或django(构建状态为:失败)的东西,用于聊天和其他各种推送操作 建议使用Ape,但似乎需要将Ape设置为服务器。如果对django的要求不太高,那么是否有任何解决方案可以直接构建到django中?django是为web页面而构建的,并且在django中没有现成的支持WebSocket的解决方案。最快/最简单的选择是pusher.c

django有哪些实时“推送”选项可以作为python包安装?我想避免像实时安装独立的web服务器这样的事情

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


建议使用Ape,但似乎需要将Ape设置为服务器。如果对django的要求不太高,那么是否有任何解决方案可以直接构建到django中?

django是为web页面而构建的,并且在django中没有现成的支持WebSocket的解决方案。最快/最简单的选择是pusher.com(我非常喜欢它)。您可以从pusher.com之类的东西开始,如果您围绕它编写一个快速包装器,您可以使用socket.io或任何其他web套接字服务器将其替换为您自己的服务器,只需更改包装器/接口以连接到新服务器。只要确保您编写它时能够随时切换出后端

如果您真的想开始运行自己的套接字服务器,那么有一些项目可以让您轻松地在django中使用套接字:


您实际上可以从中提供Django,这是Tornado中socketio的一个有效实现。如果你想在你的实时应用程序中建立任何复杂程度,你可能需要一个redis pubsub后端,它可以将会话映射到频道并处理多播。对于这一点,您可能想看一看。同时阅读尤瓦尔·亚当关于这个主题的文章。最后,Tony Abou Assaleh的和将在为django设置tornadio2时提供有用的基础参考。

自编写答案时(2012年);很多事情都改变了

现在进行系统实时更新的首选方法是使用WebSocket;该标准正在正式制定并作为标准提出。对该技术有很好的概述

另一项新兴技术是一种新技术

和等项目使在项目中集成实时功能变得更容易


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

  • 从浏览器到服务器保持打开状态的连接
  • 侦听此连接然后作出响应的服务器
  • 存储和接收消息通知的系统/标准
  • 好吧,也许有三个部分

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

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

    Django在所有这一切中的作用非常小。有多种实现提供实时通知工作所需的三个组件

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

    访问它的api也非常简单——事实上,如果您已经在使用redis(自其发布以来,您确实应该这样做),您不需要其他api,因为您可以将消息放到redis,juggernaut将读取它们,或者您可以使用其Python api。下面是一个简单的例子:

    向频道发送(写入)消息:

    >>> 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>
    
    
    var jug=新的Juggernaut();
    jug.subscribe('频道'),功能(数据){
    警报('收到消息:'+数据);
    });
    
    请注意,django websocket在生产中使用时有几个限制。django socketio不再维护。@Patrickbasut django使用WebSockets处理实时数据的更好选项是什么?