使用redis pub / sub连接Tornado进程

时间:2013-01-18 18:23:55

标签: redis tornado publish-subscribe interprocess

我有两个Tornado流程XYX中的处理程序处理发布请求,当此类请求到达时,除了在X中进行更改外,我还想更改Y中存储的一些变量。

我想使用Redis的PUB / SUB来执行此操作。很明显,在X的处理程序中,我需要将消息发布到由'Y'订阅的频道。

Y中的此订阅应该是长时间运行的,因此无论何时向通道发布消息,Y中的某些内容都应自动更新内存中的变量。但是,我不清楚如何在Y中实现此订阅以及由此产生的更新,因为它不能是正常的处理程序。我计划使用异步redis客户端tornado-redis,如果这有任何区别的话。

一些例子会很有帮助!

1 个答案:

答案 0 :(得分:1)

这不是Redis PUB / SUB解决方案,而是替代方案。如果您已经在堆栈上安装了Redis,那么您也可以使用它(或者更好的是消息队列)。

  1. 最简单的是在Y中有一个tornado.web.RequestHandler。当X需要进行更改时,让X向Y发送HTTPRequest.Payload可以是JSON,表单编码,二进制。

  2. 在Y中创建一个套接字,绑定它并添加IOLoop.add_handler监听该套接字并运行callback。当X需要进行更改时,请将其连接到该套接字。 (Payload可以是JSON,二进制)。这需要一个小插座接受&如果您需要发送消息,请阅读。

  3. 毋庸置疑,两者都应该落后于防火墙。