Flask ビューからストリーミングされたデータをリアルタイムで表示する
Flask では、ビューからのデータのストリーミングは簡単です。ただし、このストリームを使用して HTML テンプレートを動的に更新することはできません。
JavaScript と XMLHttpRequest
解決策の 1 つは、JavaScript と XMLHttpRequest を使用することです。
例:
# 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="{{ url_for('stream') }}"></iframe>
ストリーミングView
@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(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 サイトの他の関連記事を参照してください。