2016-07-10 10 views
0

Ich mache eine Flask-App und ich frage mich, ob ich eine Vorlage für eine Route rendern könnte, aber den Benutzer umleiten, nachdem eine Funktion abgeschlossen ist. Derzeit mit Python 2.7 Hier ist mein BeispielFlask - render Vorlage asynchron

@app.route('/loading/matched') 
def match(): 
    time_match() 
    return render_template('matched.html') 

def time_match(): 
    # match two users based on time 
    sleep(3) # pretend to be doing 
    return redirect('/loading/generation') 

Ich weiß nicht, wo ich anfangen soll. Gibt es eine Bibliothek, die ich benutzen sollte?

+0

Sie nicht Header senden kann (was für eine Umleitung geleitet werden), nachdem Sie den Antworttext Rücksendung begonnen haben (dh die gerenderte Vorlage). – dirn

Antwort

1

Das klingt eher nach einer Client-seitigen Sache für mich? Willst du so etwas wie einen Ladebalken?

Sie könnten eine AJAX-Route bereitstellen, die eine hohe Arbeitslast auf der Serverseite verursacht - während der Client einige Fortschritte zeigt. Sobald die Arbeitslast beendet ist, renderst du eine Vorlage, die dann über Ajax geladen wird.

Für Async Workload können Sie in Celery suchen, die eine große Bibliothek dafür ist. Es kann sogar Arbeit auf einem separaten Server tun ...

Weitere Quellen Integration in Flask

+0

[Schönes Tutorial für Async mit Fläschchen und Sellerie] (http://blog.miguelgrinberg.com/post/sellery-and-the-flask-application-factory-pattern) – Hannes

+0

Danke für die schnelle Antwort Hannes! Grundsätzlich mache ich auf dieser Route mehrere Anfragen an die Spotify API. Es dauert ungefähr 10 Sekunden, bis die API fertig ist und eine Wiedergabeliste zurückgibt. Ich wollte eine Ansicht rendern, während ich diese Anfragen mache – einfalles

+0

Also haben die Anfragen an Spotify keinen Einfluss auf das renderd Template? Sie möchten nur die Verzögerung auf der Benutzerseite loswerden? – Hannes