我有这个列表,该列表是通过查询数据库动态生成的,但是出于这个问题的目的,我使用静态列表进行演示。
我想将值流式传输到网页,所以我认为最好使用生成器。下面是我的python代码:
list111 = [1,2,3,4,5]
for i in list111:
def events():
print(i)
yield "data: %s\n\n" % (i)
return Response(events(), content_type='text/event-stream')`
我希望这个脚本能打印1到5,但它会继续打印1。这是产生列表的错误方法吗?
这是我在客户端上使用的(仅供参考):
if (!!window.EventSource) {
var source = new EventSource('/upload');
console.log(source)
source.onmessage = function(e) {
console.log(e)
var byte = e.data;
console.log(e.data)
}
}
答案 0 :(得分:1)
@ L3viathan指出,我只在第一次迭代后返回。我需要返回的是事件函数内部的for循环。
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %s\n\n" % (i)
return Response(events(), content_type='text/event-stream')`