我有两个python程序,我想传达它们。
它们都是系统服务,并且它们都不是由父进程分叉的。
有没有办法在不使用套接字的情况下执行此操作?
(例如,通过创建一些队列 - >序列化它 - >通过其他进程反序列化并执行通信;或者写入执行通信的文件进程ID,然后创建获取进程ID的魔术结构并向此进程发送一些消息。 ..)
该解决方案应该适用于Linux和Windows。
答案 0 :(得分:3)
最好的选择是ZeroMQ,这是专为IPC设计的,并且非常快(也支持TCP /多播消息传递)。 Python绑定非常好,易于使用。这里有一个关于ZeroMQ和Python的很好的介绍:http://nichol.as/zeromq-an-introduction。如果您打算在多台计算机上扩展它,那么AMQP(这是一个消息队列协议)将是一个很好的看法,有很多很棒的库用于处理AMQP for python。我非常喜欢kombu和celery。您还可以考虑twisted,它为您提供了相当疯狂的通信选项,以及一个很好的事件循环来启动。
答案 1 :(得分:1)
在Linux上,您可以使用命名管道。 http://en.wikipedia.org/wiki/Named_pipe请注意,编写程序/线程将阻塞,直到读者打开管道。
我认为Windows在某种程度上支持它们。