


Wie aktualisiere und zeige ich aus einer Flask-Ansicht gestreamte Daten dynamisch an?
Anzeigen von Daten, die aus einer Flask-Ansicht gestreamt werden, während sie aktualisiert werden
Einführung
In Flask-Anwendungen ist es oft wünschenswert, sie anzuzeigen Daten, die in Echtzeit generiert oder aktualisiert werden. Obwohl Flask über eine integrierte Unterstützung für das Streamen von Antworten verfügt, kann die Integration dieser Daten in eine HTML-Vorlage eine Herausforderung darstellen. In diesem Artikel wird erläutert, wie Sie Daten dynamisch aktualisieren, formatieren und anzeigen, während sie auf die Seite gestreamt werden.
Daten in Flask streamen
Um Daten in Flask zu streamen, müssen Sie kann einen Generator als Antwort auf eine Route verwenden. Jedes Mal, wenn die Antwort wiederholt wird, liefert der Generator einen Datenblock an den Client. Zum Beispiel:
@app.route('/') def index(): def inner(): for i in range(500): # simulate a long process to watch j = math.sqrt(i) time.sleep(1) # this value should be inserted into an HTML template yield str(i) + '<br/>\n' return flask.Response(inner(), mimetype='text/html')
Dieser Code simuliert einen lang andauernden Prozess, der jede Sekunde Werte generiert. Diese Werte werden dann als HTML-Fragmente an die Antwort gestreamt.
Verarbeitung gestreamter Daten in JavaScript
Während Flask Streaming-Antworten unterstützt, werden HTML-Vorlagen einmal auf der Serverseite gerendert und kann nicht dynamisch aktualisiert werden. Um gestreamte Daten im Browser zu verarbeiten, können Sie JavaScript verwenden, um eine Anfrage an den Endpunkt zu stellen und die gestreamten Daten bei ihrem Eintreffen zu verarbeiten.
Ein Ansatz besteht darin, das XMLHttpRequest (XHR)-Objekt zu verwenden, um eine Anfrage an zu erstellen der Streaming-Endpunkt. Sie können dann regelmäßig Daten aus der Antwort lesen, bis sie vollständig ist. Hier ist ein Beispiel:
var xhr = new XMLHttpRequest(); xhr.open('GET', '{{ url_for('stream') }}'); xhr.send(); var position = 0; function handleNewData() { // the response text includes the entire response so far // split the messages, then take the messages that haven't been handled yet // position tracks how many messages have been handled // messages end with a newline, so split will always show one extra empty message at the end var messages = xhr.responseText.split('\n'); messages.slice(position, -1).forEach(function(value) { // Update the displayed data using JavaScript latest.textContent = value; // update the latest value in place // Append the current value to a list to log all output var item = document.createElement('li'); item.textContent = value; output.appendChild(item); }); position = messages.length - 1; } // Check for new data periodically var timer; timer = setInterval(function() { // check the response for new data handleNewData(); // stop checking once the response has ended if (xhr.readyState == XMLHttpRequest.DONE) { clearInterval(timer); latest.textContent = 'Done'; } }, 1000);
Dieser JavaScript-Code verwendet das XMLHttpRequest-Objekt, um eine Anfrage an den Streaming-Endpunkt zu erstellen. Anschließend wird ein Timer eingerichtet, um regelmäßig nach neuen Daten zu suchen und die Seite entsprechend zu aktualisieren.
Verwendung eines Iframes für die gestreamte HTML-Ausgabe
Ein weiterer Ansatz zur Anzeige gestreamter Daten Eine Flask-Ansicht besteht darin, einen Iframe zu verwenden. Ein Iframe ist ein separates Dokument, das zum Anzeigen gestreamter HTML-Ausgaben verwendet werden kann. Hier ist ein Beispiel:
@app.route('/stream') def stream(): @stream_with_context def generate(): # Serve initial CSS to style the iframe yield render_template_string('<link rel=stylesheet href="{{ url_for("static", filename="stream.css") }}">') # Continuously stream HTML content within the iframe for i in range(500): yield render_template_string('<p>{{ i }}: {{ s }}</p>\n', i=i, s=sqrt(i)) sleep(1) return app.response_class(generate())
<p>This is all the output:</p> <iframe src="{{ url_for('stream') }}"></iframe>
Dieser Code verwendet den stream_with_context-Dekorator, um den Generator zu erweitern und zusätzliche Funktionen zu unterstützen. Es dient als anfängliches CSS zur Gestaltung des Iframes und streamt kontinuierlich HTML-Inhalte innerhalb des Iframes. Die HTML-Vorlage im Iframe kann komplexer sein und je nach Bedarf unterschiedliche Formatierungen enthalten.
Das obige ist der detaillierte Inhalt vonWie aktualisiere und zeige ich aus einer Flask-Ansicht gestreamte Daten dynamisch an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.
