インデックス作成操作を実行するサブプロセスを作成するpythonスクリプトがあります(logstashからelasticsearchへ)。Pythonサブプロセスが完了したときにポストアクションを実行する方法
次のようにコードスニペットは、
process = subprocess.Popen([logstash, '-f', sample.conf],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
私は、スクリプトの残りの部分とは独立して実行する必要性を作成していますサブプロセスとして、)(process.waitを呼び出すことはありません。
しかし、サブプロセスが完了したらデータベースレコードを更新する必要があります。実行中の索引付け操作では、データベースを更新できるポスト・ジョブ・コールを作成できません。
どうすればこの問題をPythonのサブプロセスで処理できますか?ジョブのPIDをテキストファイルに保存しますが、次のスクリプトを実行するためにサブプロセスが完了したことを知っているトリガーが必要です。
これは私の書き込みアプローチのようです。上記のコードを実行すると、 "TypeError: 'Popen'オブジェクトは反復可能ではありません"というエラーがスローされます。サブプロセス内にサブプロセスを作成するのは許可されていないようです。上記のコードを正常にテストしましたか? – Vinod
申し訳ありませんが、誤字!一定。私はそれをテストしていませんが、それは私が書いたものと非常によく似ています。 –
ありがとう、エラーは消えてしまった。しかし、上記のコードを実行すると、メインスレッドコードが完成すると、サブプロセスが完了するまでスクリプトがターミナルでハングします。サブプロセスを実行してメインスレッドを終了させるにはどうすればいいですか(コマンドラインを再びアクティブにする場合など)? – Vinod