需要帮助理解Python中的Comet(使用Django)

XOR*_*XOR 29 python django comet twisted gevent

花了整整两天的时间后,我仍然发现无法理解Comet in Python的所有选择和配置.我已经阅读了这里的所有答案以及我能找到的每篇博文.感觉我此刻即将出血,所以我对这个问题的任何错误都表示歉意.

我对这一切都是全新的,我之前所做的只是在Apache上使用PHP/Django后端的简单非实时站点.

我的目标是创建一个实时聊天应用程序; 希望绑定到Django的用户,身份验证,模板等.

每当我读到一个工具,它说我需要另一个工具,它感觉就像一个永无止境的链.

首先,任何人都可以对这项工作所需的所有工具进行分类吗?
我已经阅读了有关客户端的不同服务器,网络库,引擎,JavaScripts,我不知道还有什么.我从没想过会是这么复杂.

扭曲 /扭网站似乎是受欢迎的,但我不知道要整合,或什么别的我需要(猜我需要客户端JS至少).

如果我理解正确,Orbited基于 Twisted 构建的,我还需要其他任何东西吗?

Gevent和Eventlet与Twisted属于同一类别吗?我还需要多少钱?

Celery,RabbitMQ或像Redis这样的KV商店在哪里出现?我真的不明白消息队列的概念.它们是否必不可少,它们提供的服务是什么?

我应该看一下完整的聊天应用教程吗?

我会完全感激任何帮助我度过这个精神障碍的人,如果我遗漏了任何东西,请不要犹豫.我知道这是一个非常有问题的问题.

cod*_*and 8

你可以使用Socket.IO.它有gevent和龙卷风处理程序.在这里查看关于Django的gevent-socketio的博客文章:http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/


A L*_*Lee 5

在过去的几个月里,我感受到了你的痛苦,不得不经历同样的研究.我没有时间处理正确的文档,但我有一个使用Django与socket.iotornadiohttp://bitbucket.org/virtualcommons/vcweb的工作示例- 我希望建立直接通信使用队列的Django服务器端到龙卷风服务器进程(即,django视图中的逻辑将消息推送到队列,然后由tornadio处理,该消息将该消息的json编码版本推送给所有感兴趣的订户)但是没有完全实现了那部分.我目前设置的方式涉及:

  1. 一个外部龙卷风(tornadio)服务器,另一个端口上运行,接受socket.io请求,并与Django模型的工作.此服务器进程对数据库的唯一写入是需要存储的聊天消息.它可以完全访问所有Django模型等,并且所有实时交互都需要直接通过此服务器进程.
  2. 需要实时访问的Django模板页面包括socket.io javascript并建立与tornadio服务器的直接连接

我看着绕行,hookboxGEVENT但决定去与socket.io +龙卷风,因为它似乎让我最干净的JavaScript + Python代码.我可能错了,但在过去的一年里刚开始学习Python/Django.