簡體   English   中英

Flask 不流式傳輸 JSON 響應

[英]Flask not streaming JSON response

我有以下 flask 應用程序應該 stream JSON 響應

目錄結構:

server - 
        api.py
        resources -
                   stream.py

api.py

from flask import Flask
from flask_restful import Api
from resources.stream import Stream
from flask_compress import Compress

compress = Compress()
app = Flask(__name__)
compress.init_app(app)
api = Api(app)
api.add_resource(Stream, '/stream')
if __name__ == '__main__':
    app.run(debug=False,host='0.0.0.0')

資源目錄中的 stream.py

from flask import Response, request, stream_with_context
from flask_restful import Resource

class Stream(Resource):
    def get(self):
        def generator():
            yield '{"data": ['
            #creating large number of entries for data array with yield
            yield ']}'
        resp = Response(stream_with_context(generator()), status=200, content_type='application/json')
        return resp     

我使用 python3.9 api.py 啟動了 flask 應用程序

當我點擊 url http://127.0.0.1:5000/stream但在網絡選項卡中我可以看到一些問題時,我能夠得到響應:

  1. 如果響應是流式傳輸的,它不應該有 content-length
  2. 流式響應不應處於Waiting for server response state 中,它以某種方式等待完成整個響應然后開始下載。

內容長度 我得到的輸出

下面是我想要實現的 output。 流式傳輸的 output 將啟動Content Downloading並且不會卡在Waiting for server response 預期的

我找到了解決我面臨的問題的方法。 我正在使用導致此問題的 flask_compress。 刪除它會 stream 響應預期。 謝謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM