彗星的Python消息缓存?

时间:2011-03-09 23:15:58

标签: python comet tornado mq

我可以通过简化版本的示例来最好地描述我正在寻找的东西。 Tornado的演示之一是一个简单的聊天服务器:

https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py

我对这里的MessageMixin课感兴趣。它保留了静态长度的消息积压,当新消息可用时,它返回新消息列表的片段。或者这就是它的表现。我知道在编写一个简单的彗星应用程序之前我已经实现了类似的东西。

所以有人对此进行了概括并添加了花哨的东西吗?我特别感兴趣的是管理许多通信渠道的方法,并删除那些暂时没有使用过的通道。持久性也可能有用。

这是MQ可以做的吗?

1 个答案:

答案 0 :(得分:3)

Redis具有publish/subscribe功能以及其他data structure-oriented commands,您可以使用这些功能来保留和过期消息积压,列出给定房间中的用户或与其相关的其他属性。该协议是基于文本的,是Memcached命令的超集。

以下是使用chat as an example of pub/subRuby example using Websocket的说明,以及Python中使用Websocket, Tornado and Redis pub/sub实现简单聊天室的代码段。

根据您问题中的信息,专用的消息队列(如RabbitMQ)也可能对您有用。很难说不知道你在消息量,容错,复制等方面需要什么.Redis也可能是你正在寻找的东西,但如果没有别的东西它很简单,可以帮助你得到一个原型快速运行以进一步确定应用程序的要求。