我正在构建一个需要运行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发送回我的视图吗? (不是在进程完成时,而是在运行的进程中)。