Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在flask响应中返回分块的二进制数据?_Python_Flask_Chunked Encoding - Fatal编程技术网

Python 如何在flask响应中返回分块的二进制数据?

Python 如何在flask响应中返回分块的二进制数据?,python,flask,chunked-encoding,Python,Flask,Chunked Encoding,我有一个处理get请求的flask端点,我感兴趣的是在响应中返回一个对象列表(序列化),但以“分块”的方式。我的意思是,当我向该端点发出get请求时,我希望能够对响应进行迭代(就像我得到一个二进制数据列表一样),并将每个“块”反序列化为一个对象 我能够实现与我的需求类似的结果,但需要一些条件。例如: 服务器端: 从flask导入流\u和\u上下文、请求、响应 从烧瓶进口烧瓶 app=烧瓶(名称) @app.route(“/stream”) def streamed_get(): @流_与_上下文

我有一个处理get请求的flask端点,我感兴趣的是在响应中返回一个对象列表(序列化),但以“分块”的方式。我的意思是,当我向该端点发出get请求时,我希望能够对响应进行迭代(就像我得到一个二进制数据列表一样),并将每个“块”反序列化为一个对象

我能够实现与我的需求类似的结果,但需要一些条件。例如:

服务器端:

从flask导入流\u和\u上下文、请求、响应
从烧瓶进口烧瓶
app=烧瓶(名称)
@app.route(“/stream”)
def streamed_get():
@流_与_上下文
def generate():
产生“Hello\n”
产生“there\n”
屈服\不
返回响应(generate())
客户端:

导入请求
响应=请求。获取(“http://127.0.0.1:5000/stream,stream=True)
对于i的响应。iter_lines():
印刷品(一)
将打印:

Hello 
there
!
但这似乎很明显,因为我使用的是
response.iter\u lines()

为了进一步试验,我尝试向服务器发送post请求,如下所示:

客户端:

def gen():
产生“hi\n”
收益率“有”
请求。post(“http://127.0.0.1:5000/stream_post,data=gen()
服务器端:

@app.route('/stream\u post',methods=['post'])
def stream_post():
计数=0
对于request.stream中的i:
打印(一,计数)
计数+=1
打印(请求数据)
返回响应()
在服务器控制台上打印的:

('hi\n', 0)
('there', 1)
我不知道的是如何做类似的事情,但对于一个序列化对象,例如。我觉得在我的知识中有一个基本的差距,因为我似乎在寻找一种返回块编码响应的方法?或者至少是某种带有大小的响应,因此我可以在客户端对其进行迭代,如果这有意义的话