1

我有两个 Tornado 进程XY. 中的处理程序X处理 post 请求,当这样的请求到达时,除了XY.

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

这个订阅Y应该是长时间运行的,所以每当一条消息发布到频道时,里面的东西Y应该会自动更新内存中的变量。但是,我不清楚如何在 中实现此订阅以及由此产生的更新Y,因为它不能是正常的处理程序。我计划为此使用异步 redis 客户端tornado-redis,如果这有什么不同的话。

一些例子会很有帮助!

4

1 回答 1

1

这不是 Redis PUB/SUB 解决方案,而是替代方案。如果您的堆栈中已经有 Redis,那么您不妨使用它(或者更好的是消息队列)。

  1. 最简单的方法是tornado.web.RequestHandler在 Y 中为此设置一个。当 X 需要进行更改时,让 X 向 Y 发送一个 HTTPRequest。有效负载可以是 JSON、表单编码、二进制。

  2. 在 Y 中创建一个套接字,绑定它并IOLoop.add_handler在该套接字上添加监听callback以运行。当 X 需要进行更改时,让它连接到那个套接字。(有效载荷可以是 JSON,二进制)。如果您需要发送消息,这将需要一个小套接字接受和读取。

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

于 2013-01-18T20:40:48.400 回答