私はこれを参照として使用していますが、必要なことを正確に実行できません:Pythonで外部コマンドを呼び出す
私もこれを読んでいました:http ://www.python.org/dev/peps/pep-3145/
私たちのプロジェクトでは、アプリケーションをデプロイする前に更新する必要がある5つのsvnチェックアウトがあります。私の開発環境では、本番デプロイメントよりも迅速なデプロイメントが生産性にとって少し重要であるため、プロセスの高速化に取り組んできました。
私はきちんと機能しているbashスクリプトを持っていますが、いくつかの制限があります。次のbashコマンドを使用して複数の「svnupdates」を起動します。
(svn update /repo1) & (svn update /repo2) & (svn update /repo3) &
これらはすべて並行して実行され、かなりうまく機能します。また、ビルドスクリプトの残りの部分でこのパターンを使用して、各antビルドを起動し、戦争をTomcatに移動します。
ただし、更新またはビルドのいずれかが失敗した場合に展開を停止することはできません。
Pythonを使用してbashスクリプトを書き直しているので、ブランチとデプロイメントプロセスをより細かく制御できます。
subprocess.call()を使用して'svn update / repo'コマンドを実行していますが、各コマンドは順番に動作しています。'(svn update / repo)&'を試してみると、それらはすべて起動しますが、結果コードはすぐに返されます。したがって、特定のコマンドが非同期モードで失敗したかどうかを判断する方法がありません。
import subprocess
subprocess.call( 'svn update /repo1', shell=True )
subprocess.call( 'svn update /repo2', shell=True )
subprocess.call( 'svn update /repo3', shell=True )
Pythonが各Unixコマンドを起動する方法を見つけたいのですが、いずれかの呼び出しが失敗した場合は、スクリプト全体が停止します。