2016-11-02 8 views
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で使用する方法を教えてください。

答えて

関連する問題