Django-在进程运行时显示shell输出命令

时间:2018-07-09 10:14:25

标签: python django shell

我正在构建一个需要运行shell命令的基于django的Web应用程序。例如:我需要显示ping命令的实时输出。以下是一些结构:

Django视图:

<div class="output-panel">
     <span class="live-output">OUTPUT HERE</span>
</div>
<button onclick="runCommand()">Run Command</button>

Javascript:

function runCommand() {
    $.ajax({
        type: 'POST',
        url: '/api/runCommand',
        success: function(data) {
             $(".live-output").html(data);
        }
    });
}

Django函数(/ api / runCommand网址进入api.runCommand):

import subprocess
def runCommand(request):
    cmd = "ping google.com"
    process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    while True:
    nextline = process.stdout.readline()

    if nextline == '' and process.poll() is not None:
        break
    sys.stdout.write(nextline)
    sys.stdout.flush()

有什么方法可以在每次生成新的输出行时将sys.stdout发送回我的视图吗? (不是在进程完成时,而是在运行的进程中)。

0 个答案:

没有答案