我一直用這個作爲參考,但不能夠做到正是我需要的:Calling an external command in PythonPython中的異步後臺進程?
我也正在看這個:http://www.python.org/dev/peps/pep-3145/
對於我們的項目,我們有需要更新5個SVN檢出然後才能部署我們的應用程序。在我的開發環境中,快速部署對於生產力而言比生產部署更重要,我一直在努力加快這一過程。
我有一個bash腳本,一直在正常工作,但有一些限制。我用下面的bash命令啓動了多個'svn更新':
(svn update /repo1) & (svn update /repo2) & (svn update /repo3) &
這些都是並行運行,它工作得很好。我還在構建腳本的其餘部分使用這種模式來觸發每個螞蟻構建,然後將戰爭移動到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命令,如果任何呼叫的在任何時間整個腳本停止失敗。
這就是我正在尋找的。 – Geuis
謝謝,它的工作原理。有沒有辦法在後臺運行子進程 - 現在顯示在終端? (目前我看到帶有工作命令的開放shell) –