2016-02-29 67 views
1

我寫在Python(Django的)的網絡應用程序將在端執行任務/進程,典型的網絡掃描。我希望用戶能夠終止掃描,實時查看其狀態或結果。設計一個多進程守護

我認爲要做到這一點的最好辦法之一是有一個作業管理器守護進程,是一個獨立的過程,即:

  1. 通過TCP連接接受新的就業機會。
  2. 接受用戶命令,通常用於終止或重新啓動進程。
  3. 報告工作狀態。

我這個代碼的結構掙扎。我認爲守護進程上的TCP端口將接受新的作業。然後它將創建一個os.fork(),它本身將創建一個os.fork()。第二個fork將爲nmap執行os.execv()。第一個os.fork()會監視第二個fork(如何?),當它完成時,它會向master守護進程報告它已經結束。第一個分支也必須能夠終止第二個子進程。

這聽起來怎麼樣?這種結構是否已經完成?我不想重新創造輪子。

最後,如何將子進程知道第二個孩子,一個運行os.execv()已經終止?還是它仍在運行?我討厭不斷地調查一系列進程。

正如我已經說過了,這一點必須在Python完成。

+0

... –

+0

我描述芹菜?我不知道你的意思。 –

+0

芹菜是一個python分佈式任務運行者http://www.celeryproject.org/。也就是說,實際上你並沒有描述芹菜,你基本上描述了一個標準的普通網絡守護進程。有可能在python中執行你所要求的操作,但是由於你明確表示你不想重新發明輪子,所以我建議你看看Python標準庫中包含的socketserver模塊https://docs.python.org/3.4 /library/socketserver.html –

回答