2013-04-20 69 views
0

我的设置如下:一个主程序(用Python编写)充当主要应用程序,用于检索数据,并将其保存到SQLite数据库(稍后进一步处理)。该数据收集在其他程序中,运行在相同机器,称为奴隶如何在同一台机器上的程序之间进行通信?

请注意,一次只能运行一个从站,因此主站不需要同时从多个从站检索数据。但是,当一个从机关闭时,另一个从机可以开始向主机发送数据。

此设置的一个重要特征是,奴隶可以任何编程语言写,我没有对他们太多的控制。然而,我可以“插入”这些从属程序,以便扩展它们的功能并将数据从该应用程序发送到主站。

发送给主数据的数据必须是“正式”格式,例如,键/值对的列表或类似。这个要求是灵活的,它也取决于当前正在运行的从站。

现在我的问题:如何在同一台机器上运行程序的实例之间实现通信?我想过网络服务,但它们似乎有点矫枉过正,因为它们都运行在同一台主机上。另一种替代方案可能是通过基于Json的数据通过套接字进行通信,但是我还没有对这种方法提供太多的经验,所以我无法判断它是否适合我在这种情况下的需求。

这两种方法只是我的第一个想法,但我愿意接受任何好的解决方案。

我认为有一种“最佳实践”的方法来实现这样的设置,因为我肯定不是第一个具有这样的需求的设备。

任何想法,甚至更好:实践经验,对此?
谢谢。

+0

什么阻止你使用持久存储? – 2013-04-20 15:14:29

+0

您是指通过数据库或文件? 这不会比例如慢。通过套接字?但是正如我说的,我在这里开放思想 - 有什么优势? – Matthias 2013-04-20 16:48:22

回答

0

在进程之间没有跨平台的通信方式,但我没有理由不使用tcp套接字。

示例:mongod是MongoDB的守护进程,其他进程只是通过普通的tcp套接字与其进行通信(请参阅this)。

+0

是的,也许套接字确实是一个很好的解决方案。但是,数据应该以什么格式表示? Json,还是有更好的“标准”方式通过套接字传输数据? – Matthias 2013-04-20 16:50:03

+0

@Matthias我看到json非常方便。传统的XML也可能是一种选择。两者都被广泛使用。 – 2013-04-20 16:57:31

+0

好的,那么我想我会随着插座去,谢谢:) – Matthias 2013-04-20 17:05:23

相关问题