我一直在使用这个作为参考,但是无法完全达到我所需要的:在Python中调用外部命令
我也读了这篇文章:http://www.python.org/dev/peps/pep-3145/
对于我们的项目,在我们可以部署应用程序之前,有5个svn检出需要更新。在我的开发环境中,快速部署对生产部署来说更为重要,因此我一直在努力加快这个过程。
我有一个Bash脚本,表现还不错,但也有一些限制。我使用以下Bash命令启动多个'svn update':
(svn update /repo1) & (svn update /repo2) & (svn update /repo3) &
这些操作都是并行运行的,效果很好。我还在构建脚本的其它部分使用了这种模式,来依次启动每个ant构建,然后将war文件移动到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命令,如果任何一个调用在任何时候失败,整个脚本将停止。