を使用していくつかの svn コマンドを実行する Python スクリプトを作成しsubprocess.Popen
ました。例えば:
svn ls svn+ssh://url1/trunk
svn cp svn+ssh://url1/trunk svn+ssh://url1/branch/1 --parents -m "blah"
コマンドごとに、subprocess.Popen オブジェクトを作成します。
p = subprocesp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)
そして、それが終了するのを待ちます:
output = p.communicate()[0].strip()
return_code = p.returncode
問題は、存在しないsvn cp
リポジトリをコピーするためにシェルですぐに失敗する一部のコマンドでは、p.communicate()
が返されないことです。
追加情報:
- コードはスレッド プールを使用して実行されます (
multiprocessing.pool.ThreadPool
) - 現象は、失敗した場合にのみ現れます
- シェルを使用すると、まったく同じコマンドが 2 秒以内にエラー コード 1 で終了します。
ここで何が欠けているのですか?