我一直以此作为参考,但无法完全完成我所需要的:Calling an external command in Python
我也在读这个: http: //www.python.org/dev/peps/pep-3145/
对于我们的项目,我们有 5 个 svn checkout 需要更新,然后才能部署我们的应用程序。在我的开发环境中,快速部署对于生产力来说比生产部署更重要,我一直在努力加快这个过程。
我有一个运行良好但有一些限制的 bash 脚本。我使用以下 bash 命令启动多个“svn 更新”:
(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 命令,如果任何调用在任何时候失败,整个脚本都会停止。