我需要在同一台机器上的两个应用程序之间共享一些队列,一个是 Tornado,它偶尔会向该队列添加消息,另一个是从 cron 运行的 python 脚本,它在每次迭代中添加新消息。任何人都可以为此建议我模块吗?(这可以通过redis使用解决吗,我避免为此使用mysql)
问问题
651 次
3 回答
0
我会使用带有列表的redis。您可以将元素推到顶部,然后 rpop 从尾部移除。
请参阅 redis rpop 和redis lpushx
于 2013-08-04T00:21:21.087 回答
0
我能想到的最纯粹的方法是使用 IPC。当一个进程产生另一个进程时,Python 对两个进程之间的 IPC 有很好的支持,但在您的场景中则不然。有用于 ipc 的 python 模块,例如sysv_ipc
和posix_ipc
. 但是,如果您要在 tornado 中构建主应用程序,为什么不让它在zeromq
套接字上侦听已发布的消息。
这是包含更多信息的链接。您需要发布者-订阅者模型。
http://zeromq.github.io/pyzmq/eventloop.html#tornado-ioloop
您的 cron 作业将启动并将消息发布到zeromq
套接字。您已经运行的应用程序将接收它们作为订阅者。
于 2013-08-04T00:22:36.550 回答