Forum Programmation.python cgi et commands shell

Posté par  .
Étiquettes : aucune
0
12
jan.
2007
Bonjour,

Mon problème est le suivant : je cherche à faire une page web affichant des résultats du logiciel d'alignement de séquence BLAST.

Mon script (sous apache ou sous un serveur python j'ai testé les 2) execute la commande suivante sur une séquence entrée dans un formulaire et stockée dans un fichier


res = commands.getoutput("/usr/bin/blastall -i "+loc_tmp_fasta+" -p blastp -d
"+db+" -m 8 -o "+loc_tmp_blast)


les variables concaténée, sont les localisation des mes fichier :
loc_tmp_fasta : le fichier de ma séquence requete
db : la localisation de la base de donnée sur laquelle la requete est faite
loc_tmp_blast : mes résultats

une fois cette commande executée, je parse le fichier de résultat loc_tmp_blast à l'aide d'un parseur que j'ai codé (et qui fonctionne correctement), et print les résultats en html.

Le problème est que tout semble bien se dérouler : la page s'affiche sans erreur, la variable res renvoie '0' (donc à priori pas d'erreur de blastall), les fichiers sont bien créés, mais mon fichier de resultats est vide, alors que la même commande exécutée sous l'interpreteur python, ou bien directement dans le shell, fonctionne bien et renvoi des résultats dans mon fichier loc_tmp_blast.
J'ai effectué pas mal de tests, et ce n'est pas un pb de droit d'écriture
Chose étrange, le script s'execute et affiche la page immédiatement (alors que le logiciel BLAST effectue des algorithmes assez lourds donc prend quand même un certain temps, de l'ordre de 5 secondes sous le shell, pour la requete de test). Pas de pb de time out, puisqu'avec une commande "sleep 100" la page ne s'affiche âs tant que les 100sec ne sont pas écoulées...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.