ホームページ >ウェブフロントエンド >jsチュートリアル >Flask ビューからストリーミングされたリアルタイム データを表示するにはどうすればよいですか?

Flask ビューからストリーミングされたリアルタイム データを表示するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 09:43:07564ブラウズ

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

Flask ビューからストリーミングされたデータをリアルタイムで表示する

Flask では、ビューからのデータのストリーミングは簡単です。ただし、このストリームを使用して HTML テンプレートを動的に更新することはできません。

JavaScript と XMLHttpRequest

解決策の 1 つは、JavaScript と XMLHttpRequest を使用することです。

  1. XMLHttpRequest を使用して、データをストリーミングするエンドポイントとの接続を確立します。
  2. 完了するまでストリームから定期的に読み取ります。
  3. HTML を直接更新します。受け取ったdata.

例:

# 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)
<!-- Template -->
<p>Latest output: <span>

Iframe の使用

別のアプローチには、次の使用が含まれます。ストリーミング HTML 出力を表示するための iframe。これにより、スタイルの柔軟性やその他の利点が得られますが、次のような欠点もあります。

  • リソースの使用量が多くなる
  • ドキュメントが分離され、シームレスに統合するのが難しくなります
  • スクロールの問題が発生する可能性があります長さ出力

例:

index.html (メインテンプレート)

<p>All output:</p>
<iframe src=&quot;{{ url_for('stream') }}&quot;></iframe>

ストリーミングView

@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)

stream.css (オプションのスタイルシート)

body {
  font-family: sans-serif;
}
p {
  margin-bottom: 10px;
}

JavaScript/XMLHttpRequest または iframe メソッドを利用することで、効果的に次のことができます。 Flask ビューからストリーミング データを表示し、リアルタイムで更新を維持します。

以上がFlask ビューからストリーミングされたリアルタイム データを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。