【问题标题】:Use redis pub/sub to connect Tornado processes使用 redis pub/sub 连接 Tornado 进程
【发布时间】:2013-01-18 18:23:54
【问题描述】:

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

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

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

一些例子会很有帮助!

【问题讨论】:

    标签: redis tornado publish-subscribe interprocess


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2015-08-10
      • 2015-11-09
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多