Django渠道实时应用程序

时间:2017-03-25 09:16:16

标签: python django python-3.x

我已经开始研究Django应用程序了,它应该有一个WEB UI来在另一台服务器上运行我的自定义脚本,我需要实时查看UI中的输出。重要的是看一步一步的脚本执行。问题是 - 如何将脚本输出(打印,python脚本的记录器)重定向到通道,然后将其推送到客户端?

1 个答案:

答案 0 :(得分:2)

我还没有使用Django应用程序,但由于它是一个MVC框架,我想我的回答与你的问题有关。

您可以向控制器进行ajax调用(可能使用jquery),然后控制器启动脚本。我认为有两种方法可以做到这一点。

首先,是对不同的控制器发出串行ajax请求,这些控制器调用不同的服务器端脚本。例如:

// Javascript
$.ajax({
        url: '/controller1/',
        data: {
            payload: "Anything"
            // some payload that you may want to pass to controller
            // optional
        },
        dataType: 'json',
        success: function (data) {
            // assess results of your call
          }
        }
      });


$.ajax({
        url: '/controller2/',
        data: {
            payload: "something"
            // some payload that you may want to pass to controller
            // optional
        },
        dataType: 'json',
        success: function (data) {
            // assess results of your call
          }
        }
      });


# ==== Python  =========
from django.http import JsonResponse

def controller1(request):
    # get data passed along with ajax request
    dataFromClient = request.GET.get('payload', None)

    # send that data to your script, for processing, if required
    resultFromScript = Script1(dataFromClient)

    #return processed data back to client
    return JsonResponse(resultFromScript)

def controller2(request):
    # Similar structure

在第二种方法中,您可以将外部脚本可能需要的所有有效负载一次性传输到单个控制器,然后让该控制器调用其他脚本并将其结果存储在不同的变量中。最后序列化来自不同变量的结果并作为JSON传回客户端。

我希望这能为您提供一些见解。