2012-12-18 50 views
3

阅读此页http://flask.pocoo.org/docs/patterns/streaming/好像我也许可以做我想做的,我有一个将输出发送到JSON一个简单的URL路径,但我宁愿是流输出:瓶流输出功能到浏览器

@app.route('/') 
def aws_api_route_puppet_apply(ip=None): 
    output = somemethod(var1,var2,var3) 
    return Response(json.dumps(output), mimetype='application/json') 

有没有一种方法可以将somemethod流式传输到使用烧瓶和HTML的浏览器,还是我需要使用JavaScript?

+0

BTW输出=的someMethod(VAR1,VAR2,VAR3)发送输出到烧瓶日志,所以有输出,我只是希望它发送到浏览器和日志。 –

回答

5

就像文档所说的那样,只需创建一个生成器并生成要返回给客户端的每一行。

如果输出为10行长,那么下面将打印的每个十行的(因为它们是可用的)到客户端:

@app.route('/') 
def aws_api_route_puppet_apply(ip=None): 
    def generate(): 
     for row in somemethod(var1,var2,var3): 
      yield row + '\n' 
    return Response(generate(), mimetype='application/json') 
+0

@Brian只有两个注意事项:a)理想情况下,您希望'somemethod'自己返回一个生成器(懒惰评估)。 b)比CSV更容易传输像CSV这样的换行符分隔的格式。 – miku

+0

所以我真的尝试过,但它等待完成的方法,然后促进我下载csv文件。我宁愿它一行一行地在屏幕上显示输出,这可能吗? –

+0

@BrianCarpio - 简单地删除'mimetype'参数(或将其改为'text/html') –