需要在两个应用程序之间共享队列模块

时间:2013-08-04 00:17:45

标签: python python-2.7

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

3 个答案:

答案 0 :(得分:0)

我会将redis与列表一起使用。你可以将元素顶部推出,然后使用rpop从尾部移除。

参见redis rpopredis lpushx

答案 1 :(得分:0)

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

这是一个包含更多信息的链接。您需要Publisher-Subscriber模型。

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

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

答案 2 :(得分:0)

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