Python中连接两个守护进程

5
什么是在Python中连接两个守护程序的最佳方法?
我有守护程序A和B。我想要在A的模块中接收由B生成的数据(也许是双向的)。两个守护程序都支持插件,因此我想在插件中关闭通信。什么是最佳的跨平台方法?
我知道一些来自低级解决方案的机制 - 共享内存(C / C ++),Linux管道,套接字(TCP / UDP)等,以及一些高级别的 - 队列(JMS,RabbitMQ),RPC。
两个守护程序应该在同一主机上运行,但很明显更好的方法是从连接类型中抽象出来。
Python中的典型解决方案/库是什么?我正在寻找一种优雅且轻量级的解决方案。我不需要外部服务器,只需要两个进程相互交流。
我应该在Python中使用什么来做到这一点?

1
消息队列很可能是最优雅的解决方案。 - ThiefMaster
嗯,就消息队列而言,我了解RabbitMQ/JMS等。我想避免使用外部的第三方守护进程/服务器来处理整个通信。此外,通信将非常频繁,因此即使队列是最优雅的方式,我认为还有更简单的方法可能更好。 - Simon
1
我会说 dbus,但是现在没有适用于 Windows 的 dbus 版本。 - dav1d
不幸的是,Windows也是我的目标。 - Simon
当与communicate()一起使用时,subprocess.Popen()是否能够满足您的需求?类似于使用包含子进程并相互通信的总体程序来生成两个程序及其参数。 - IT Ninja
不是真的。我不想更改那些守护进程,甚至不想改变启动/停止它们的方式。用例很简单。我(管理员、cron作业、任何已配置的东西)只需启用我的插件运行其中之一,第二个也是如此。如果插件能够连接到第二个,则发送数据,否则在日志中产生警告或类似的内容。现在我认为任何RPC/Socket解决方案都是最好的。队列是最优雅的,但不轻量级。有没有关于Python中RPC/Socket(在本地使用)库的推荐? - Simon
2个回答

2

0

我不确定你的流量有多大,但我建议使用asyncore包。它相当简单易用,基于套接字。

我很久以前就用这个做了一个命令模式。如果你感兴趣,我可以找出代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接