gpt4 book ai didi

python - django前端运行子进程输出到浏览器窗口

转载 作者:行者123 更新时间:2023-12-01 06:09:37 25 4
gpt4 key购买 nike

我基本上有一个用 perl 编写的后端程序。该程序将一些配置推送到网络设备上。它提供了大量输出,我希望用户能够在程序运行时看到该程序。到目前为止,这很容易,因为我一直从终端运行。

现在我正在尝试编写一个 django 应用程序。我基本上希望用户按下提交,浏览器将他们带到一个新页面,在这个新页面上,我希望用户看到该程序运行时的文本输出。

我已经设法使用以下方法让程序在后台运行: http://docs.python.org/library/subprocess.html

假设下面是一个简单的请求。在响应网页中,我想查看实时运行的程序的输出,或者至少每隔几秒刷新一次以查看最新的输出(目前可能是一个解决方法)

def config(request):
builder_Config_list = Config.objects.all().order_by('-generated_date')[:100]
if 'hostname' in request.POST and request.POST['hostname']:
hostname = request.POST['hostname']
command = "path/to/builder.pl --router " + hostname
result = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
return render_to_response('config/config.html', {'result':result, } )

最佳答案

您可以像这样读取子进程的输出...

pipe = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
result = pipe.stdout.read() # this is the output of the process
return render_to_response('config/config.html', {'result': result})

但是,您只能在该过程完成后才能看到结果。如果你想在程序运行时看到输出,那就有点困难了。我想这可以通过将子进程调用放入单独的进程或线程中,让进程写入文件或消息队列,然后从 View 中的该文件中读取来完成。

关于python - django前端运行子进程输出到浏览器窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com