使用redis pub/sub连接Tornado进程



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

我想使用Redis的PUB/SUB来做到这一点。很明显,在X的处理程序中,我需要将消息发布到由'Y'订阅的通道。

Y中的订阅应该是长时间运行的,这样每当消息发布到通道时,Y中的某些内容应该自动更新内存中的变量。然而,我不清楚如何在Y中实现此订阅和由此产生的更新,因为它不能是一个正常的处理程序。我计划异步redis客户端tornado-redis,如果这有任何区别。

一些例子将是很大的帮助!

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

  1. 最简单的是在y中有一个tornado.web.RequestHandler。当X需要进行更改时,让X发送一个HTTPRequest给Y.有效载荷可以是JSON,格式编码,二进制。

  2. 在Y中创建一个套接字,绑定它并在该套接字上添加IOLoop.add_handler侦听,并运行callback。当X需要进行更改时,让它连接到该套接字。(有效载荷可以是JSON,二进制)。这将需要一个小插座接受&

不用说,两者都应该在防火墙后面。

最新更新