2017-05-05 1 views
0

Ich arbeite an einer Web-App, wo ich ein Shell-Skript ausführen und Live-Ausgabe durch Rückgabe von Response-Objekt drucken. Gibt es eine Möglichkeit, auf eine andere Seite umzuleiten, sobald das Shell-Skript fertig ist?Flask: Redirect nach Rückgabe eines Flask Response-Objekts

@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 

Oder wenn es einen Weg gibt, kann ich eine Vorlage im Response-Objekt gehören, kann ich einige Tasten sind auf der Seite ich will zu navigieren.

Ich mag auch etwas tun wollen:

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 

Ausgang

Ist das möglich? Jede Hilfe wird geschätzt. Danke im Voraus.

+1

ist Sie können eine HTML-Seite zurückbringen ODER umleiten zu einer anderen Seite. Wenn Sie beides versuchen, kann der Benutzer das ursprüngliche HTML aufgrund der sofortigen Umleitung nicht sehen. –

+0

Meinst du, du willst ein kontinuierliches Skript ausführen und Live-Ausgabe von ihm auf der Seite bekommen? –

+0

@AndrewCherevatkin: Ich bin in der Lage, Live-Ausgabe von dem Skript zu bekommen. Aber sobald das Skript läuft, möchte ich auf eine Seite umleiten. –

Antwort

1

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

könnte am Ende arbeiten ... je nachdem, ob der Browser die gestreamten Daten interpretting oder Dumping es einfach. ein besseres teqnique im Allgemeinen ist, etwas wie Sellerie für lang laufende Aufgaben zu benutzen und js dann zu verwenden, um den Server zu interogate, um zu sehen, ob es getan