Wie wird die Python-Ausgabe auf einer Webseite angezeigt?

8

Ich möchte eine Webseite besuchen können und es wird eine Python-Funktion ausführen und den Fortschritt in der Webseite anzeigen.

Wenn Sie also die Webseite besuchen, können Sie die Ausgabe des Skripts sehen, als würden Sie es von der Kommandozeile aus starten und die Ausgabe in der Befehlszeile sehen.

Was muss ich in der Funktion tun?

Was muss ich in der Vorlage tun?

BEARBEITEN:

Ich versuche den Code von Markus Unterwaditzer mit einer Vorlage zu verwenden.

%Vor%

Python-Code

%Vor%

Und es läuft, aber ich sehe nichts im Browser.

    
Siecje 23.02.2013, 14:32
quelle

5 Antworten

13

Hier ist eine sehr einfache App, die die Ausgabe eines Prozesses mit normalem HTTP streamt:

%Vor%     
Markus Unterwaditzer 23.02.2013, 15:45
quelle
5

Ich hatte heute das gleiche Problem und habe einen Weg gefunden, Markus Unterwaditzers Antwort auf die Arbeit mit einem Template anzupassen.

Der Schlüssel ist, jinjas Template.generate() anstelle von Template.render() zu verwenden wird von flashs render_template() verwendet.

%Vor%

Angenommen, es gibt eine Vorlage result.html , die wie folgt aussieht:

%Vor%     
ValarDohaeris 03.05.2013 13:16
quelle
3

Ich würde meinen, dass dies am einfachsten ist, wenn Sie Ihre Seite erstellen und dann mithilfe von AJAX regelmäßig Anfragen an den Server stellen und den Inhalt Ihrer Seite mithilfe der Ergebnisse aktualisieren. Dies könnte die Implementierung langer Abfragen beinhalten, um dies zu tun.

Wie Sie dies tun, müssen Sie Ihre Funktion irgendwie blockierungsfrei machen, so dass Sie während des Betriebs immer noch Anfragen bedienen können. Sie könnten eine Funktion manuell schreiben, die eine Anfrage bedient, wenn eine wartet und ansonsten den nächsten "Chunk" der Funktion weiter ausführt. Das würde bedeuten, Ihre Funktion in kleine Teile zu zerlegen, damit Sie sie nach Bedarf versenden können.

Ein besserer Ansatz könnte das Threading oder Multiprocessing sein, je nachdem, ob Ihre Funktion an die E / A- oder CPU-Nutzung gebunden ist.

    
Justin Blank 23.02.2013 15:12
quelle
1

Haben Sie einen Plan, WebSocket zu verwenden? Wenn ja, können Sie sich an Websocket mit Flask and Gevent

wenden     
Joe 24.02.2013 01:49
quelle
-1

Sie können die Meta-Aktualisierung in einer der Vorlagen verwenden

meta http-equiv="Aktualisieren" content="5"

    
forvaidya 23.02.2013 15:05
quelle

Tags und Links