我好像不知道怎么用烧瓶的水。这是我的代码:
@app.route('/scans/')
def scans_query():
url_for('static', filename='.*')
def generate():
yield render_template('scans.html')
for i in xrange(50):
sleep(.5)
yield render_template('scans.html', **locals())
return Response(stream_with_context(generate()))
在我的模板中:
<p>{% i %}</p>
我想在这一页上看到一个每隔半秒钟就改变一次的计数器。相反,我得到的最接近的是在下一行打印出每个数字的页面。
要替换页面上的现有内容,您可能需要javascript,也就是说,您可以发送它或让它为您发出请求,使用长轮询、websockets等。有很多方法可以做到这一点,下面是使用server send events:
其中
static/index.html
:默认情况下,如果连接丢失,浏览器将在3秒内重新连接。如果没有更多要发送的内容,服务器可以返回404,或者只发送一些
'text/event-stream'
内容类型来响应下一个请求。要在客户端停止,即使服务器有更多数据,也可以调用source.close()
。注意:如果流不是无限的,那么使用其他技术(不是SSE),例如发送javascript片段来替换文本(无限
<iframe>
技术):我在这里内联了html,以显示它没有更多的功能(没有魔力)。这里与上面相同,但使用模板:
其中
templates/index.html
:我认为如果要使用这样的模板,可能需要使用这里给出的
stream_template
函数:http://flask.pocoo.org/docs/patterns/streaming/#streaming-from-templates我没有测试这个,但可能看起来像:
相关问题 更多 >
编程相关推荐