Bonjour à tous !

Voilà, j'ai un petit problème concernant un bout de code python, quelques mots pour résumer ma situation :

Je travaille sur la mise en place d'un cluster de machines hudson pour de l'intégration continue, j'ai donc une machine maître "master" et plusieurs esclaves "slave".

Sur ces machines j'essaye de faire fonctionner via hudson une tâche batch spécifique.

Cette tâche consiste en un script shell qui va lancer un script python.

Ce script python lance une commande maven, ce qui donne en gros dans le script python :

1 - construction du pom.xml (nécessaire pour le lancement de la commande maven)

2 - exécution de la commande maven via le code python : subprocess.call(lacommande)

3 - maven crée des dossiers divers pour le traitement

4 - clean des dossiers de traitement et du pom.xml

Ce script marche correctement sur le "master", mais rencontre un problème sur les "slaves", en effet sur les "slaves" le subprocess.call(commande) n'attend pas la fin de l'exécution de ladite commande maven et passe donc à l'étape 4 décrite ci dessus sans attendre la fin des étapes 2 et 3, il efface donc le fichier pom.xml avant de pouvoir l'utiliser, ce qui mène à une erreur.

Bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 retcode = subprocess.call(cmd, shell=True) #lancement de la commande
 copy_results(dir_tmp_project, workspace) #copy des résultats 
 clean_tmp_dir(dir_tmp_project) #clean du workspace et du pom.xml
 return retcode

Dans la documentation python, il est spécifié que subprocess.call va attendre la fin de la commande avant de passer à la suite, ce qui n'a pas l'air d'être le cas sur les "slaves".

L'environnement est le même sur le "master" et les "slaves".

python : version 2.6.4
Linux red hat 4.1.2

J'espère que mon explication est assez claire.

En attente d'idées pour débloquer cette situation !

Merci d'avance,

Cordialement,

Glor.