2012-01-09 16 views
5

私はcrontabを使って、subprocess.popen()を使っていくつかのproccesesを起動すると思われるpythonスクリプトを起動しています。私はこのコマンドを使って30分かかるかもしれないプロシージャを起動します。結果を待つのではなく、オリジナルのcrontab実行スクリプトを続けます。問題は、crontabがsubprocess.callのようにsubprocess.popenを処理するようです! unix crontabはpythonのsubprocess.popenをうまく扱いません

私は私のログファイルと最初のpopenが成功したプロセスリストにはっきりと見ることができますが、それがバックグラウンドでcontiue does notの

- 私はリダイレクトしていますので、それはpopenのプロセスが終了firtsまで待機...

が、これは可能性がありstderr/steoutをファイルに追加しますか?私は、接続が表示されていないが、おそらく...

私のコードは次のとおりです。

# inside process spawning loop 
# open and append process to list 
mainLogger.debug("about to launch process with popen") 
scoopPopenObj = subprocess.Popen(cmdArgsString, 
        shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile) 
openScoops.append((fileName,time.time(),scoopPopenObj)) 
# rest of script, here is where i dont get until scoopPopenObj finishes.. 

任意のアイデア?

答えて

1

私はこれが問題に関連していることをわからないんだけど、stdoutと同じパイプにstderrをリダイレクトするときdocumentationで説明したように、あなたはstderr=subprocess.STDOUTを使用する必要があります。

関連する問題