0

我需要在同一台机器上的两个应用程序之间共享一些队列,一个是 Tornado,它偶尔会向该队列添加消息,另一个是从 cron 运行的 python 脚本,它在每次迭代中添加新消息。任何人都可以为此建议我模块吗?(这可以通过redis使用解决吗,我避免为此使用mysql)

4

3 回答 3

0

尝试使用RabbitMQ托管独立于您的应用程序的队列,然后使用Pika进行访问,它甚至带有 Tornado 适配器。只需选择适当的模型:队列/交换/主题和您想要的消息的协议(字符串、json、xml、yaml)就可以了。

于 2013-08-04T00:25:23.350 回答
0

我会使用带有列表的redis。您可以将元素推到顶部,然后 rpop 从尾部移除。

请参阅 redis rpopredis lpushx

于 2013-08-04T00:21:21.087 回答
0

我能想到的最纯粹的方法是使用 IPC。当一个进程产生另一个进程时,Python 对两个进程之间的 IPC 有很好的支持,但在您的场景中则不然。有用于 ipc 的 python 模块,例如sysv_ipcposix_ipc. 但是,如果您要在 tornado 中构建主应用程序,为什么不让它在zeromq套接字上侦听已发布的消息。

这是包含更多信息的链接。您需要发布者-订阅者模型。

http://zeromq.github.io/pyzmq/eventloop.html#tornado-ioloop

您的 cron 作业将启动并将消息发布到zeromq套接字。您已经运行的应用程序将接收它们作为订阅者。

于 2013-08-04T00:22:36.550 回答