Je comprends que cette question a déjà été posée mais les méthodes conseillées ne fonctionnent pas pour moi. C'est ce que je veux faire de mon point de vue Django:Exécution du fichier Python à partir de vues Django
sudo python mypythonscript.py arg1 arg2 > mypythonscript.log
Si j'exécute cette ligne de commande, il fonctionne comme un charme, mais ne peut le faire fonctionner à travers des vues django. J'ai essayé d'utiliser os.system (commande) et subprocess.call (commande, shell = True) mais ils ne fonctionnent pas. Merci d'avance.
EDIT: Ceci est mon views.py:
from django.http import HttpResponse
import datetime
import subprocess
def li_view(request):
if request.is_ajax():
if request.method == 'GET':
message = "This is an XHR GET request"
elif request.method == 'POST':
message = "This is an XHR POST request"
print request.POST
else:
message = "No XHR"
num_instances = request.POST['num_instances']
ami_id = "ami-ff02058b"
command = "sudo python /home/bitnami/launch_instances.py 1 " + num_instances + " " + ami_id + " > /home/bitnami/launcinstances.log"
subprocess.call(commad, shell=True)
return HttpResponse("something creative will go here later")
L'histoire est que j'ai un formulaire sur mon site et je veux transmettre le contenu de cette forme que arguements à mon launch_instances.py scénario. Lorsque j'appuie sur le bouton "Soumettre" dans mon formulaire, il publie dans/luanch_instances/qui "redirige" vers cette vue. L'exécution du code tel qu'il est ne fera rien, il me suffira de me montrer "quelque chose qui va aller plus tard" sur une nouvelle page. Si je devais jamais comment utiliser
suprocess.check_call(command, shell=True)
C'est ce que je reçois:
Command 'sudo python /home/bitnami/launch_instances.py 1 ami-ff02058b > /home/bitnami/launchinstances.log' returned non-zero exit status 2
Vous devez nous dire pourquoi cela n'a pas fonctionné. Montrez votre code et sortie. –
Aussi qu'est-ce que vous essayez d'accomplir en faisant cela dans une vue Python? Il est généralement conseillé d'utiliser une file d'attente de tâches telle que Celery pour effectuer ce genre de tâches, car elle ne lie pas votre serveur Web. –
@VladimirVolodin J'ai ajouté la sortie et le code maintenant – AmirHBP