我正在开发一个Web应用程序,我正在运行shell脚本并通过返回Response对象打印实时输出。一旦shell脚本运行完毕,我有没有办法重定向到另一个页面?
@app.route("/setup", methods=['POST', 'GET'])
def setup():
def inner():
command = ["./test.bash", "exam"]
proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
for line in iter(proc.stdout.readline,''):
yield line.rstrip() + '<br/>\n'
return Response(inner(), mimetype='text/html')
# After this I want to redirect to another page say success.html
或者如果有办法,我可以在Response对象中包含一个模板,我可以包含一些按钮来导航到我想要的页面。
我也想做点什么:
for line in iter(proc.stdout.readline,''):
if line == "Success":
# Redirect to success.html after returning Response object with script output
else:
# Redirect to error.html after returning Response object with script
输出
这可能吗? 任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:1)
yield '<script>document.location.href="http://redirect.me"</script>'
最终可能会起作用...取决于浏览器是在解释流式数据还是只是转储数据。那说一个更好的teqnique一般是使用像celery这样的东西用于长时间运行的任务然后使用js来交互服务器以查看它是否完成