我有一个生成数据并实时流化它的视图。我不知道如何将这些数据发送到我可以在HTML模板中使用的变量。我当前的解决方案只是在数据到达时将其输出到一个空白页,这是可行的,但我希望将其包含在具有格式的较大页中。当数据流到页面时,如何更新、格式化和显示数据?
import flask
import time, math
app = flask.Flask(__name__)
@app.route('/')
def index():
def inner():
# simulate a long process to watch
for i in range(500):
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')
app.run(debug=True)
您可以在响应中流式传输数据,但不能像描述的那样动态更新模板。模板在服务器端呈现一次,然后发送到客户端。您需要使用JavaScript读取流式响应并在客户端输出数据。
使用
XMLHttpRequest
向将流式传输数据的终结点发出请求。然后定期从流中读取,直到完成为止。本例假设一种非常简单的消息格式:一行数据,后跟一个换行符。当然,只要有一种方法来识别每一条消息,您就可以随心所欲地进行复杂的解析。例如,您可以返回一个JSON对象并在客户端对其进行解码。
相关问题 更多 >
编程相关推荐