Асинхронные фоновые процессы в Python?

Я использовал это в качестве ссылки, но не смог выполнить именно то, что мне нужно:Вызов внешней команды в Python

Я также читал это:http://www.python.org/dev/peps/pep-3145/

Для нашего проекта у нас есть 5 проверок svn, которые необходимо обновить, прежде чем мы сможем развернуть наше приложение. В моей среде разработки, где быстрое развертывание немного важнее для производительности, чем производственное развертывание, я работал над ускорением процесса.

У меня есть скрипт bash, который работал прилично, но имеет некоторые ограничения. Я запускаю несколько 'svn updates' с помощью следующей команды bash:

(svn update /repo1) & (svn update /repo2) & (svn update /repo3) &

Все они работают параллельно, и это работает довольно хорошо. Я также использую этот шаблон в оставшейся части сценария сборки для запуска каждой сборки муравья, а затем перемещаю войны в Tomcat.

Однако я не контролирую остановку развертывания в случае сбоя одного из обновлений или сборки.

Я переписываю свой bash-скрипт на Python, чтобы иметь больше контроля над ветвями и процессом развертывания.

Я использую 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, и если какой-либо из вызовов завершается неудачей в любой момент, весь скрипт останавливается.

Ответы на вопрос(1)

Ваш ответ на вопрос