使用Python实现实时通知

3
首先有TornadoWeb,它是异步和非阻塞的,另一方面有Dojo。如果我使用tornado,如何与dojo通信?
另一个问题是,如果我使用像Flask这样的WSGI解决方案,我能用它们来进行“通知”吗?或者说必须要有一个“开放连接”才能让dojo与服务器通信,而这在WSGI中无法实现?也就是说,Apache或CherryPy不能与Dojo配合使用?
如果WSGI无法与Dojo通信,那么使用Atom或Feeds在WSGI下编写通知怎么样?
注:通知将分为两部分:所有用户的产品通知和特定用户的通知;它将使用会话...
最后一个问题,WebSockets和HTML5怎么样?服务器必须兼容才能与浏览器一起使用这个选项吗?

2
http://www.tornadoweb.org/documentation/websocket.html + http://dojotoolkit.org/features/1.6/dojo-websocket 可以为您提供一些提示... - Philippe
1
好的,服务器发送消息,客户端接收消息,反之亦然... 所以是的! - Philippe
1个回答

3

我不确定为什么Dojo似乎是通信问题的原因。

Dojo提供了AJAX包装器,您可以在Web应用程序中使用它们进行几乎实时的通知,每1-5秒钟进行一次AJAX请求,从而减少负载。

如果应用程序将有很多用户,则频繁的AJAX请求可能会迅速导致过多的开销。幸运的是,您不必使用Dojo与服务器通信。您可以查看Socket.IO,如果您想在服务器端坚持使用Python,则可以使用gevent-socketio。它使用Web浏览器中可用的最佳技术(WebSockets、Flash sockets、comet)来提供实时通信。

还有dojox.socket,但我认为它不够强大(并且远不如流行)。

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

您选择的解决方案应取决于Web应用程序本身及其用户群。


但是龙卷风呢?它不是Python的一个解决方案吗? - Abdelouahab
1
事实上,你可以使用Tornado或gevent编写异步服务器。我刚刚发现Tornado也有一个Socket.IO的实现。如果你熟悉Tornado,就用它。如果不熟悉,那么一些基准测试表明gevent可能性能更好(这是相当旧的基准测试,没有考虑WebSockets性能)。 - Juliusz Gonera
1
如果您计划在其中构建整个 Web 应用程序,那么您是正确的。如果您只想编写一个 Socket.IO 服务器,则这些事情并不重要。 - Juliusz Gonera
如果只有非阻塞在通知中,那么混合使用WSGI和Tornado是可行的吗? - Abdelouahab
1
你可以通过WSGI运行Tornado,或者拥有两个不同的应用程序,一个使用传统的WSGI框架(如Flask),另一个使用Tornado或gevent。在第二种情况下,如果您有用户会话(例如,使用HMAC签名的用户ID),则必须提供这两个应用程序之间的一种简单通信方式。 - Juliusz Gonera
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接