我知道以前有人问过这个问题,但建议的方法对我不起作用。这就是我想要从我的 Django 视图中做的事情:
sudo python mypythonscript.py arg1 arg2 > mypythonscript.log
如果我从命令行执行它,它就像一个魅力,但不能让它通过 django 视图工作。我曾尝试使用 os.system(command) 和 subprocess.call(command, shell=True) 但它们不起作用。提前致谢。
编辑:这是我的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")
整个故事是我的网站上有一个表单,我想将该表单的内容作为参数传递给我的 launch_instances.py 脚本。当我按下表单中的提交按钮时,它会发布到 /luanch_instances/ ,它会“重定向”到这个视图。按原样执行代码不会做任何事情,它只会在新页面上向我显示“稍后创建的内容将转到此处”。如果我要怎么用
suprocess.check_call(command, shell=True)
这就是我得到的:
Command 'sudo python /home/bitnami/launch_instances.py 1 ami-ff02058b > /home/bitnami/launchinstances.log' returned non-zero exit status 2