2012-01-09 33 views
0

我有一個簡單的python服務器腳本,它分散了C++程序的多個實例(如N個)。 C++程序生成一些需要捕獲的事件。關於做IPC /事件捕獲的建議請求

當前正在捕獲日誌文件中的事件(每個分叉進程1個日誌文件)。另外,我需要定期(T分鐘)將所有子進程中產生的事件的速率提供給python服務器或其他偵聽這些事件的程序(仍然不確定)。基於這些事件的速度,一些「再行動」可以由服務器(比如減少分叉實例的數量)採取

一些指點我已經簡單看了看:

  • grep的日誌文件 - 通過正在運行的進程日誌文件(.running),過濾最近T分鐘生成的條目,分析數據並報告
  • socket ipc - 向C++程序添加代碼以將事件發送到某些分析數據的服務器程序在T分鐘後,再次報告並重新開始
  • redis/memcache(不確定是否完全) - 將代碼添加到C++ pro克使用一些分佈式存儲捕獲所有生成的數據,T分鐘後分析數據,重新報告並重新開始

請讓我知道您的建議。

感謝

+0

投票遷移到Programmers.SE - 根據定義,任何要求建議,而不是具體答案不屬於SO。 – ildjarn 2012-01-10 00:01:02

回答

0

如果時間不是本質的(T分鐘聽起來好像比C++程序中發生的任何事件都長),那麼不要讓事情變得比他們需要的更復雜。忘記IPC(套接字,共享內存等),只需讓每個C++程序記錄您需要了解的時間/性能,並讓python腳本每隔T分鐘記錄一次您需要的數據。不要浪費時間過於複雜的東西,你可以做一個簡單的方式

0

作爲替代你的插座IPC的建議,怎麼樣0mq。它是一個可以在線程間,進程間或機器間進行消息傳輸的庫(使用Python中的可用綁定)。很容易去,很快。

我不隸屬於它。我只是評估它的其他用途,並認爲它可能適合你。