Flask:返回Flask Response对象后重定向

时间:2017-05-05 15:48:56

标签: python flask

我正在开发一个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 

输出

这可能吗? 任何帮助表示赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:1)

yield '<script>document.location.href="http://redirect.me"</script>'

最终可能会起作用...取决于浏览器是在解释流式数据还是只是转储数据。那说一个更好的teqnique一般是使用像celery这样的东西用于长时间运行的任务然后使用js来交互服务器以查看它是否完成