繁体   English   中英

Flask 流媒体在完成之前不会返回响应

[英]Flask streaming doesn't return back response until finished

所以我试图 stream 从 sql 数据库返回的数据块。 块似乎是流式传输的,但是当我到达端点时,它会在请求完成时在最后显示响应,而不是逐块显示流式传输的数据。 我知道已经有关于此的问题,但添加 mimetype 似乎对我不起作用。 我有以下代码:

非常感谢任何帮助!

       def generate_chunks():
            result = _get_query_service(repo_url, True).stream_query(qry)
            chunk_counter = 0

            while True:
                chunk = result.fetchmany(5)
                chunk_counter += 1
                if not chunk:
                    break
                for value in chunk:
                    yield str(chunk)

        return Response(stream_with_context(generate_chunks()), content_type='application/json', status=200)

其实这是一件小事。 上面的代码有效。

但是像 Postman 和 Insomnia 这样的工具不支持流数据。

如果您想查看数据流式传输,请使用 CURL 或 python 请求。

对于 CURL,您需要添加--no-buffer选项才能查看流数据。

curl --no-buffer -v http://localhost:8082/healthy

对于 Python 请求,您需要添加stream=True 例子:

r = requests.post('http://localhost:8082/stream_query', json=dc, stream=True)

r.encoding = 'utf-8'

for line in r.iter_content(chunk_size=10): # prints the streamed data in chunks
    print(line)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM