Python 彗星服务器

31 投票
7 回答
20759 浏览
提问于 2025-04-15 12:05

我正在开发一个网页应用,它有一个实时更新的动态消息流(类似于Facebook的新闻动态),我想通过一种叫做长轮询的方式来更新这个消息流。我了解到在Python中,我的选择主要是使用Stackless(可以参考他们的Comet wsgi示例)或者Cometd加上Twisted。不过,关于这些选项的文档非常少,我在网上找不到关于在Python中大规模使用Comet的好资料。

有没有人成功在生产环境中用Python实现过Comet?你是怎么做到的?我可以在哪里找到实现我自己项目的资源?

7 个回答

6

这里有一个完整的例子,展示了如何把Django、Orbited和Twisted结合起来,创建一个实时(Comet)应用程序。你可以在这个链接找到它:http://github.com/clemesha/hotdot,这个例子是用Python写的。

13

Orbited 看起来是个不错的解决方案。不过我还没试过。


更新: 在过去的2年半里,情况发生了变化。

现在所有主要浏览器都支持websockets,除了IE(这也在意料之中),还有一些非常好的工具可以在这个基础上进行扩展,提供了很多模拟实时通信的方法。

9

我推荐你使用 StreamHub Comet Server,很多人都在用这个。就我个人来说,我在几个Django网站上也用过它。你需要写一点Java代码来处理数据流,我是用 Jython 来实现的。前端的代码其实很简单,主要是一些基本的Javascript,像这样:

StreamHub hub = new StreamHub();
hub.connect("http://myserver.com/");
hub.subscribe("newsfeed", function(sTopic, oData) { alert("new news item: " + oData.Title); });

它的文档写得不错,我在刚开始接触Cometd等的时候也遇到过类似的问题,文档不太全。建议你先看看 如何开始使用Comet和StreamHub,下载一些示例代码,看看它们是怎么工作的,如果需要的话可以参考API文档:

撰写回答