我有一個python腳本,它創建一個運行索引操作的子進程(logstash to elasticsearch)。如何在python子進程完成後執行post操作
的代碼片段如下,
process = subprocess.Popen([logstash, '-f', sample.conf],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
我不叫process.wait(),作爲子我創建需要獨立運行腳本的其餘部分。
但我必須在子流程完成時更新數據庫記錄。我正在運行的索引操作不允許我創建一個後期作業調用,這將允許我更新數據庫。
我該如何處理python子流程?我將作業的PID存儲在一個文本文件中,但是我想要一個觸發器來知道子流程何時完成以執行下一個腳本。
這看起來像寫給我的方法。但執行上面的代碼會拋出一個錯誤「TypeError:'Popen'對象不可迭代」。它看起來像在子流程內創建子流程是不允許的。你成功測試過上面的代碼嗎? – Vinod
對不起,錯字!固定。我沒有測試過,但它與我寫的東西非常相似,這很有用。 –
謝謝,錯誤消失了。但是,如果我執行上面的代碼,一旦主線程代碼完成,腳本掛在終端上,直到子進程完成。如何讓子進程運行並退出主線程(如使命令行再次激活)? – Vinod