0
私は、実行に非常に時間がかかるため、データベースインポートスクリプトでエラーをキャッチする方法を作成しようとしています。実行中のスクリプトでサブプロセスを使用してリターンコードをモニタ
の通信を監視するために、前に私は私のドッキングウィンドウexecコマンドの前に)(しようとしていたが、最近まで、私は質問「import.pl」でスクリプトがドッキングウィンドウの外で実行されていることを学んだ、と私は
でそれを監視することができますps aux | grep perl
これは、私が現在持っているものである
#!/usr/bin/python
import sys
import subprocess
cities = ["x","y", "z"];
uncompletedcities = []
for x in cities:
dockerscript = "docker exec -it docker_1 perl ./import.pl %s %s" % (x,x)
p = subprocess.Popen(dockerscript, shell=True, stderr=subprocess.PIPE)
error = p.communicate()
if p.returncode != 0:
uncompletedcities.append(x)
while p.poll() == None:
print p.stderr.read()
print (uncompletedcities)
しかし、私は正しい出力を得ることができませんでした。
check_output(["pidof", "perl"])
を使用して
私は、問題のスクリプトのthatsのPIDを返します。
私は、EOLに達してリターンコードで終了するまで、実行中のpidを監視するために、サブプロセスまたは別のライブラリをPythonで使用する方法を教えてください。