Python消息到其他应用程序
问题描述:
我有两个python应用程序(前端服务器和数据收集器,数据库'之间')。
目前使用Redis的作为分贝及其发布/订阅协议时,新的数据可用来通知前端。
但我可能要使用不同的数据库(不希望保留的Redis在系统上只为发布/订阅)。
是否有任何简单的替代品来通知我的前端,如果数据收集已办理新的数据到数据库中(不使用像beanstalkd或Redis的外部消息队列)?
答
正如我在我的评论中提到,如果你想要的是通过网络去那么其他比建立一个Web服务(瓶的应用程序?),或写自己的东西INET套接字服务器没有内置于操作系统之间的机器之间进行通信。 Beanstalk在Python中有一个非常简单的API,我已经非常成功地将它用于这类事情。
try:
beanstalk = beanstalkc.Connection(host="my.host.com")
beanstalk.watch("update_queue")
except:
print "Error connecting to beanstalk"
while True:
job = beanstalk.reserve()
do_something_with_job(job)
如果你只是要在同一台机器上工作,然后阅读Linux IPC。进程之间的套接字连接速度非常快,几乎没有开销。当您利用epoll回叫时,它们也可以是异步程序的一部分。
答
ZeroMQ是一个不错的选择。它具有良好的Python绑定,并且它使得同一台机器上的进程和不同机器上的进程之间的通信看起来几乎完全相同。
开始通过阅读指南:http://zguide.zeromq.org/page:all
难道这些总是要在同一台机器上?如果是这样你可以使用套接字。 – aychedee 2013-03-08 08:21:12
目前他们,但我想,我可以分发在其他机器上.. – Beastcraft 2013-03-08 08:24:50
那么很可能不是选项,魔豆是非常简单的。设置一个可以ping通的小型web服务来从后端提醒前端可能比安装beanstalk更复杂。 – aychedee 2013-03-08 08:38:30