2011-11-27 79 views
1

我有2個彼此獨立運行,但共享相同的數據庫的python服務器。他們需要相互溝通以確定何時對數據庫進行了某些更改,以便其他服務器(如果正在運行)可以重新加載緩存的數據。Python進程間通信建議

在兩個這樣的程序之間進行通信的最佳選擇是什麼?

我想過使用套接字,但它似乎很多工作。無論何時一個程序都會輪詢連接,或者它們都需要具有服務器/客戶端功能。我查看了命名管道,但沒有看到任何簡單的便攜式解決方案(需要在Windows和Unix上運行)。

回答

3

最簡單的方法是使用數據庫本身作爲通信手段。添加一個記錄更新的表格。然後,任何一臺機器都可以定期查詢以查看基礎數據是否已更改。

另一種簡單的溝通方式是使用電子郵件smtplib module。我們的buildbots和版本控制庫使用這種形式的通信。

如果你想要更多的「工業」實力的東西,考慮使用RabbitMQ或其他服務器之間的消息。

5

你可以讓每一個執行simple XMLRPC server。然後每個人都可以在另一箇中執行代碼,比如告訴另一個需要更新的代碼。

+0

+1這不是一個常見的解決方案,但它會很好地工作。 –

1

我同意套接字通常太低級別。如果您調查「RabbitMQ」,您還應該調查celery。它可以使用RabbitMQ作爲後端,但它也可以使用數據庫,並整齊地封裝消息機制。它也與django和gevent集成在一起。