Processus d'arrière-plan asynchrone en Python?

J'ai été en utilisant comme référence, mais pas capable d'accomplir exactement ce dont j'ai besoin: L'appel d'une commande externe en Python

J'ai aussi été la lecture de ce: http://www.python.org/dev/peps/pep-3145/

Pour notre projet, nous avons 5 svn extractions qui ont besoin de mettre à jour avant de pouvoir déployer notre application. Dans mon environnement de dev, où la rapidité des déploiements sont un peu plus importants pour la productivité que pour un déploiement en production, j'ai travaillé sur l'accélération du processus.

J'ai un script bash qui a été de travailler décemment, mais comporte certaines limites. Je lance plusieurs "svn mises à jour" avec la commande bash suivante:

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

Toutes ces fonctions de s'exécuter en parallèle et ça marche plutôt bien. J'utilise également ce modèle dans le reste du script de construction pour le coup d'envoi de chaque fourmi construire, puis en déplaçant les guerres de Tomcat.

Cependant, je n'ai pas de contrôle sur l'arrêt de déploiement, si l'une des mises à jour ou de l'échec de la construction.

Je suis ré-écrire mon script bash avec Python donc je n'ai plus de contrôle sur les branches et le processus de déploiement.

Je suis à l'aide de sous-processus.call() pour déclencher le "svn update /repo" les commandes, mais chacun agit de manière séquentielle. J'essaie '(svn update /repo) & " et celles-feu désactiver, mais le code de résultat revient immédiatement. Donc je n'ai aucun moyen de déterminer si une commande échoue ou non dans le mode asynchrone.

import subprocess

subprocess.call( 'svn update /repo1', shell=True )
subprocess.call( 'svn update /repo2', shell=True )
subprocess.call( 'svn update /repo3', shell=True )

J'aimerais trouver un moyen d'avoir Python d'incendie à chaque commande Unix, et si l'un des appels échoue à tout moment l'intégralité du script s'arrête.

source d'informationauteur Geuis