我有两个Tornado流程X
和Y
。 X
中的处理程序处理发布请求,当此类请求到达时,除了在X
中进行更改外,我还想更改Y
中存储的一些变量。
我想使用Redis
的PUB / SUB来执行此操作。很明显,在X
的处理程序中,我需要将消息发布到由'Y'订阅的频道。
Y
中的此订阅应该是长时间运行的,因此无论何时向通道发布消息,Y
中的某些内容都应自动更新内存中的变量。但是,我不清楚如何在Y
中实现此订阅以及由此产生的更新,因为它不能是正常的处理程序。我计划使用异步redis客户端tornado-redis
,如果这有任何区别的话。
一些例子会很有帮助!
答案 0 :(得分:1)
这不是Redis PUB / SUB解决方案,而是替代方案。如果您已经在堆栈上安装了Redis,那么您也可以使用它(或者更好的是消息队列)。
最简单的是在Y中有一个tornado.web.RequestHandler
。当X需要进行更改时,让X向Y发送HTTPRequest.Payload可以是JSON,表单编码,二进制。
在Y中创建一个套接字,绑定它并添加IOLoop.add_handler
监听该套接字并运行callback
。当X需要进行更改时,请将其连接到该套接字。 (Payload可以是JSON,二进制)。这需要一个小插座接受&如果您需要发送消息,请阅读。
毋庸置疑,两者都应该落后于防火墙。