2010-04-09 6 views
4

J'utilise l'adaptateur apache2 mod_wsgi pour un site django et j'appeler un processus bash dans une vue, en utilisant l'habituelComment appeler le processus bash depuis django/wsgi?

... 
p = subprocess.Popen("/home/example.com/restart-tomcat.sh", shell=True) 
sts = os.waitpid(p.pid, 0)[1] 
... 

Ce code fonctionne parfaitement à partir d'un shell python habituel mais ne fait rien (je peut tracer maintenant) lorsqu'il est appelé dans django. Est-ce que je manque des contraintes wsgi? Le script a 755 perms, donc il devrait être exécutable.

Un test rapide

p = subprocess.Popen("date >> home/example.com/wsgi-test.txt", shell=True) 
sts = os.waitpid(p.pid, 0)[1] 

révèle qu'il ne s'exécute même pas les commandes triviales. Je n'ai pas d'idées en ce moment et je suis reconnaissant pour toute contribution.

Merci.

Répondre

2

Le script lui-même peut avoir 755 autorisations, mais les choses qu'il appelle peuvent ne pas avoir les autorisations correctes. Surtout si vous avez Tomcat fonctionnant sur le port 80, qui est un port privilégié.

Il existe des moyens de contourner ce genre de problème (setuid, sudo), mais vous devriez savoir exactement ce que vous faites.

Je changerais votre appel Popen pour ouvrir un script différent qui a le contenu date >> /home/example.com/test.txt juste pour voir s'il l'exécute du tout, et vous pouvez alors vous soucier d'essayer de déboguer les autorisations.

+0

Merci, a fait un test; il ne semble pas exécuter quoi que ce soit, il ne déclenche pas non plus d'erreur OSError .. Tomcat fonctionne sur un port non-proviledged, donc cela ne devrait pas poser de problème – chang

+0

Je veux presque demander si vous pouvez faire quelque chose comme ouvrir un fichier normal à ce chemin en utilisant le fichier python io, 'h = open ('/ home/example.com/test.txt', 'a'); h.write ('ligne \ n'); h.close(); Vraiment bizarre, si toutes les permissions sont correctes. Ça devrait marcher. – synic

+0

Merci pour votre commentaire. Je suis en train de vérifier toutes les permissions en ce moment .. en particulier celles nécessaires au bon redémarrage de tomcat. – chang

0

écriture sur la sortie standard

ici: http://code.google.com/p/modwsgi/wiki/ApplicationIssues

Cela vaut-il ici? Je recherche un problème similaire ....  

+0

Si vous utilisez mod_wsgi 3.X alors non, cette restriction a été levée car personne ne voulait écrire du code portable. Voir 'http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html'. –

Questions connexes