2013-04-20 42 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

相關問題