【问题标题】:Real-time notification using Python使用 Python 的实时通知
【发布时间】:2012-01-04 13:58:00
【问题描述】:

首先是TornadoWeb,它是异步且非阻塞的,另一方面是Dojo。如果我使用tornado,如何与dojo交流?

还有一个问题,如果我使用像Flask 这样的WSGI 解决方案,我可以向他们发出“通知”吗?还是道场必须有一个“开放连接”才能与服务器对话,这不是使用 WSGI 完成的吗?意思是; Apache 或 CherryPy 不能与 Dojo 一起使用?

如果 WSGI 不能与 Dojo 对话,那么在 WSGI 下使用 Atom 或 Feeds 来编写通知呢?

注意:通知将分为两种:针对所有用户的产品通知和针对特定用户的通知;它将使用会话...

最后一个问题,WebSockets 和 HTML5 呢?服务器必须与浏览器兼容才能使用此选项?

【问题讨论】:

标签: dojo websocket comet flask tornado


【解决方案1】:

我不确定为什么 Dojo 似乎是沟通中的问题。

Dojo 为您提供了 AJAX 包装器,您可以通过每 1-5 秒发出一个 AJAX 请求,在几乎没有负载的 Web 应用程序中使用这些包装器来提供几乎实时的通知。

如果应用会有很多用户,频繁的 AJAX 请求会很快导致过多的开销。幸运的是,您不必使用 Dojo 与服务器进行通信。你可以看看Socket.IO,如果你想在服务器端坚持使用Python,gevent-socketio。它使用网络浏览器中可用的最佳技术(WebSockets、Flash 套接字、comet)来提供实时通信。

还有dojox.socket,但我认为它不太健壮(而且远没有那么受欢迎)。

但是,您应该记住,通过使用任何类型的持久连接(无论是 WebSockets、Socket.IO 还是 dojox.socket),您都需要一个能够维持许多同时连接的异步服务器。

您选择的解决方案应取决于网络应用本身及其用户群。

【讨论】:

  • 但是龙卷风怎么样,没有python的解决方案?
  • 是的。实际上,您可以使用 Tornado 或 gevent 来编写异步服务器。我刚刚发现还有一个Socket.IO implementation for Tornado。如果你知道龙卷风,那就去吧。如果不是,那么some benchmarks 表示 gevent 可能会表现得更好(尽管这是一个相当老的基准,并且不考虑 WebSockets 的性能)。
  • 是的,但是 Tornado 也是一个框架,所以它有一个模板引擎和 goog URL 调度器,就像 web.py 使用的那样
  • 如果您打算在其中构建整个 Web 应用程序,那么您有道理。如果你只是想写一个 Socket.IO 服务器,那这些都无所谓。
  • 您可以运行Tornado through WSGI 或拥有两个独立的应用程序,一个用一些传统的 WSGI 框架(例如 Flask)编写,另一个用 Torando 或 gevent。在第二种情况下,如果您有用户会话(例如,传递使用 HMAC 签名的用户 ID),则必须在这两个应用程序之间提供一些简单的通信方式。
猜你喜欢
  • 2016-03-27
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
相关资源
最近更新 更多