Wenn Sie mit Echtzeitdaten arbeiten, die aus einer Flask-Ansicht gestreamt werden, ist es selbstverständlich, dass Sie diese in einer dynamischen HTML-Vorlage anzeigen möchten. Herkömmliche Techniken zum Rendern von Vorlagen sind jedoch unzureichend, da die Vorlage einmal auf der Serverseite gerendert und vollständig an den Client gesendet wird.
Eine Lösung für dieses Problem besteht darin, JavaScript für clientseitige Updates zu verwenden. Indem Sie eine XMLHttpRequest-Anfrage an den Streaming-Endpunkt stellen, können Sie die Daten inkrementell lesen und direkt auf der Seite ausgeben. Dieser Ansatz ermöglicht Aktualisierungen in Echtzeit und vollständige Kontrolle über das Anzeigeformat.
Hier ist ein Beispiel mit JavaScript:
Python (serverseitig):
from flask import Flask, Response app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/stream') def stream(): def generate(): for i in range(10): yield str(i) + '\n' return Response(generate(), mimetype='text/plain')
HTML (clientseitig):
<p>This is the latest output: <span>
An Ein alternativer Ansatz besteht darin, einen Iframe zum Anzeigen der gestreamten HTML-Ausgabe zu verwenden. Während diese Technik ein dynamisches Rendering ermöglicht, bringt sie Nachteile mit sich:
Bei dieser Methode würde die Datei index.html enthalten:
<p>This is all the output:</p> <iframe src="{{ url_for('stream') }}"></iframe>
Und die Stream-Ansicht in Python wäre:
from flask import stream_with_context @app.route('/stream') def stream(): @stream_with_context def generate(): yield '<link rel=stylesheet href="{{ url_for('static', filename='stream.css') }}">' for i in range(10): yield render_template_string('<p>{{ i }}: {{ s }}</p>\n', i=i, s=sqrt(i))
In diesem Beispiel wird CSS zuerst mit render_template_string in den Iframe geladen und der HTML-Inhalt wird inkrementell gestreamt .
Das obige ist der detaillierte Inhalt vonWie streame ich Echtzeitdaten effizient aus einer Flask-Ansicht in eine HTML-Vorlage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!