0

我有 nginx 服务器代理请求到一些龙卷风实例。每个 tornado 实例都基于 Tornado 附带的长轮询聊天演示。该脚本有一个存储回调的数组,然后用于将消息发送回客户端。

我遇到的问题是,当有多个龙卷风实例时,nginx 使用循环策略。由于回调是按实例存储的(而不是集中维护),因此根据发出请求的时间,它会转到其中一个实例。因此,当必须推送数据时,它只会转到存储在同一个龙卷风实例中的回调。

是否有如何在多个龙卷风实例之间存储数据的标准做法?我正在考虑使用 memcached,但是如果我需要迭代存储中的所有键,那将是不可能的(尽管它不是我一直需要的东西)。我只是想知道是否有在多个 python 进程之间存储数据的标准做法。我还阅读了有关mmap的信息,但不确定它如何与存储回调(它们是 python 方法)一起工作。

4

2 回答 2

1

没有现成的配方,您可以使用 mmap 或消息提供程序(如 RabbitMQ)或简单的 noSQL DB(如 Redis)。在你的情况下,我可能会尝试 ZeroMQ。

于 2012-04-28T11:15:34.750 回答
1

如果它是一个“聊天”风格的应用程序,你最好看看 Redis 和那里实现的 Pub/Sub 处理。

这是一个关于 pub/sub 的好问题。 在 Tornado 中处理 Redis 连接的正确方法是什么?(异步 - 发布/订阅)

于 2012-04-30T18:07:36.667 回答