我有一个脚本文件(.py),该文件需要在POST API请求中运行。这些脚本也没有几个输入参数。
我可以通过链接https://django-extensions.readthedocs.io/en/latest/runscript.html进行操作,现在我可以从外壳程序成功运行脚本了。
python manage.py runscript scriptName --script-args arg1 arg2
但是现在,我想在API中运行带有参数的相同脚本,其中参数将从POST请求中发布。 我发现我可以使用子流程。但这不起作用。
以下是我要运行的代码:
cmd = subprocess.Popen(['scriptName', arg1, arg2], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, err = cmd.communicate()
执行上述代码后,脚本文件将在浏览器中打开。
注意::我正在执行的脚本包含机器学习代码。
请帮助我,让我知道我在做什么错。我还需要脚本的输出作为响应返回。
答案 0 :(得分:2)
这是工作代码
DjangoProject / Project / view.py
from rest_framework.generics import ListAPIView
from rest_framework.response import Response
import os
class MyView(ListAPIView):
def post(self,request):
message = self.request.POST.get('message','')
os.system('python cout.py '+message)
return Response(
{
"Status":True
}
)
我在django根文件夹下的python脚本
DjangoProject / cout.py
import sys
print("Python : ",sys.argv[1])
通过邮递员,您可以发送带有表单数据“邮件”的邮寄请求 然后您可以在控制台上看到该消息
示例: 在邮递员中
message = hi jasir
在您的控制台中:
Python : hi jasir