【问题标题】:How to run python script simultaneously when user input in Django REST api?当用户在 Django REST api 中输入时如何同时运行 python 脚本?
【发布时间】:2018-05-08 13:20:58
【问题描述】:

我是 Django REST API 和 Python 的新手。 我有python脚本。我创建了简单的 Django REST API 来获取用户的输入。

现在我想在用户通过 Django REST API 提供输入然后用它运行我的 python 脚本之后做。所以我想将我的 python 脚本与 Django REST API 集成。

我尝试进行谷歌搜索但无法理解,因为在某些论坛中他们使用subprocess 并且在某些论坛中给出了REQUEST 功能。我很困惑,无法理解。

我的view.py文件如下:

from django.shortcuts import render

from rest_framework import viewsets
from . models import input_params
from . serializers import input_paramsSerializer

class inputViewSet(viewsets.ModelViewSet):

    queryset = input_params.objects.all()
    serializer_class = input_paramsSerializer 

url.py 文件

from django.contrib import admin
from django.conf.urls import url,include
from base_search.views import inputViewSet
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'input',inputViewSet)

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^',include(router.urls))
]

问题1

现在谁能告诉我如何在这里连接我的 python 脚本?

问题2:

如果我只是在端点连接我的 python 脚本,那么它会自动从 Django REST API 获取用户输入数据并运行我的 python 脚本吗?

如果有人有好的例子,请告诉我。

【问题讨论】:

  • 为什么需要使用 srcipt 而不是简单地创建任何 python 函数并调用它?
  • 感谢您的评论,但我已经制作了 python 脚本,它包含一些功能,我需要对用户输入进行一些分析工作。那个
  • import 呢?
  • import 我应该导入什么?我需要在 view.py 中导入文件吗?
  • import 您的文件在您的视图中

标签: python django


【解决方案1】:

您可以使用子流程来实现所需的功能。

子进程模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。

该模块中的底层进程创建和管理由 Popen 类处理。

import sys
import subprocess
subprocess.Popen(['myscript.py', 'arg1', ...], ..., shell=True)

你也可以使用类似的东西:

from subprocess import Popen
p = Popen("<your_script>.py arg1 arg2")
#p will have your detailed result output, 
#you can then proceed with this variable for further decision making

【讨论】:

  • 感谢您的回复,但请您详细说明一下,因为我是 Django 的新手。我试图制作一个小脚本,它只打印所有参数并按照你在 view.py 文件中的建议编写代码,但它没有显示期望输出你能不能详细说明你的答案,所以这对我很有帮助
  • 没有,我还没有使用基本的“GET”和“POST”方法,只是在 POST 方法中编写了 Python 代码。还是想学习如何在API中直接导入python代码
  • 另一种方法是采用面向对象的方法,将现有的python代码转换为类并直接导入它们:)
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多