0

を使用していくつかの 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 で終了します。

ここで何が欠けているのですか?

4

1 に答える 1

1

奇妙なことに、問題は Eclipse にありました。スクリプトはシェルから完全に正常に動作しますが、内部の Eclipse ターミナルで永久に待機します。

于 2013-07-30T02:07:31.013 に答える