【问题标题】:Python Comet ServerPython彗星服务器
【发布时间】:2009-06-07 01:18:21
【问题描述】:

我正在构建一个 Web 应用程序,该应用程序具有我想通过长轮询机制更新的实时提要(类似于 Facebook 的新闻提要)。我知道对于 Python,我的选择几乎是使用 Stackless(从他们的 Comet wsgi 示例构建)或 Cometd + Twisted。不幸的是,关于这些选项的文档很少,我无法在网上找到关于 Python 上的彗星生产规模用户的良好信息。

有没有人在生产系统中成功地在 Python 上实现了 comet?你是怎么做的?我在哪里可以找到资源来实现我自己的?

【问题讨论】:

    标签: python cometd python-stackless


    【解决方案1】:

    Orbited 似乎是一个不错的解决方案。不过没试过。


    更新:过去 2.5 年情况发生了变化。

    我们现在在所有主要浏览器中都有 websockets,除了 IE(自然)和一些非常好的抽象,它们提供了许多模拟实时通信的方法。

    【讨论】:

    • orbited 的缺点是文档太少。
    • 轨道和链接似乎已经死了?它现在指向一个关于健康生活方式故事和其他类似内容的博客。
    【解决方案2】:

    我建议你应该使用StreamHub Comet Server - 它被很多人使用 - 我个人在我运行的几个 Django 站点中使用它。您将需要编写一点点 Java 来处理流式传输 - 我使用 Jython 完成了这项工作。前端代码是一些真正简单的 Javascript a la:

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

    文档非常好 - 当您尝试开始使用 Cometd 等人的稀疏文档时,我遇到了类似的问题。首先,我会阅读 Getting Started With Comet and StreamHub,下载并查看其中一些示例如何工作,如果需要,请参考 API 文档:

    【讨论】:

      【解决方案3】:

      这是一个结合 Django、Orbited 和 Twisted 以创建实时(彗星)应用程序的全功能示例:http://github.com/clemesha/hotdot 使用 Python。

      【讨论】:

        【解决方案4】:

        我已经使用twisted 完成了大量类似的API,其中大部分都可以在我的github 帐户上找到。

        大多数是客户端,但slosh 是我编写的用于执行实时廉价发布订阅之类的事情的服务器。通过允许简单的流复制,它可以在一定程度上水平扩展读取。当您坚持使用纯 HTTP 时,写入会有所不同,但我已经通过它进行了大量的演示。

        否则,您将拥有大多数 XMPP 服务器支持的完整 BOSH,并且允许您将消息分发与 Web 前端分离。

        【讨论】:

          【解决方案5】:

          我还没有这样做,但是this guy 已经写了一篇关于它的好文章,其中包含 Django 示例和指向其他框架的指针(我没有检查过)。

          【讨论】:

            【解决方案6】:

            orbited 和 redis 解决方案很好,但当您拥有类似 google 发布的 PubSubHubbub 时不再相关。这使得成为给定提要的发布者或订阅者变得非常容易。 http://code.google.com/p/pubsubhubbub/

            【讨论】:

              【解决方案7】:

              Here's an example that does long-polling with gevent and Django.

              它使用 greenlet - 来自 Stackless 的堆栈切换功能,打包为 CPython 扩展。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-12-31
                • 2011-01-02
                • 2010-10-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-03-29
                • 2011-09-02
                相关资源
                最近更新 更多