Maison > interface Web > js tutoriel > Comment puis-je afficher les données en temps réel diffusées à partir d'une vue Flask ?

Comment puis-je afficher les données en temps réel diffusées à partir d'une vue Flask ?

Patricia Arquette
Libérer: 2024-12-09 09:43:07
original
644 Les gens l'ont consulté

How Can I Display Real-Time Data Streamed from a Flask View?

Affichage des données diffusées à partir d'une vue Flask en temps réel

Dans Flask, la diffusion de données à partir d'une vue est simple. Cependant, il n'est pas possible de mettre à jour dynamiquement un modèle HTML avec ce flux.

JavaScript et XMLHttpRequest

Une solution consiste à utiliser JavaScript et XMLHttpRequest. Nous pouvons :

  1. Utiliser XMLHttpRequest pour établir une connexion avec le point de terminaison diffusant les données.
  2. Lire périodiquement à partir du flux jusqu'à la fin.
  3. Mettre à jour le code HTML directement avec le reçu données.

Exemple :

# App
app = flask.Flask(__name__)

# Streaming view
@app.route('/')
def index():
    def generate():
        # Simulate data generation
        for i in range(500):
            yield str(i) + '<br/>\n'
    return flask.Response(generate(), mimetype='text/html')

# Run the app
app.run(debug=True)
Copier après la connexion
<!-- Template -->
<p>Latest output: <span>
Copier après la connexion

Utiliser un Iframe

Une autre approche consiste à utiliser une iframe pour afficher la sortie HTML en streaming. Bien que cela permet une flexibilité de style et d'autres avantages, cela présente également des inconvénients :

  • Utilisation plus élevée des ressources
  • Document séparé, plus difficile à intégrer de manière transparente
  • Problèmes de défilement potentiels avec long sortie

Exemple :

index.html (modèle principal)

<p>All output:</p>
<iframe src=&quot;{{ url_for('stream') }}&quot;></iframe>
Copier après la connexion

Streaming Voir

@app.route('/stream')
def stream():
    @stream_with_context
    def generate():
        yield '<link rel=stylesheet href=&quot;{{ url_for('static', filename='stream.css') }}&quot;>'
        for i in range(500):
            yield '<p>{{ i }}: {{ s }}</p>\n'.format(i=i, s=math.sqrt(i))
            sleep(1)
Copier après la connexion

stream.css (Feuille de style facultative)

body {
  font-family: sans-serif;
}
p {
  margin-bottom: 10px;
}
Copier après la connexion

En utilisant les méthodes JavaScript/XMLHttpRequest ou iframe, vous pouvez afficher efficacement les données diffusées à partir de votre vue Flask et maintenir les mises à jour en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal