Flask Response生成流式数据api;iter_lines,iter_content遍历区别

1、Flask Response生成流式数据api

注意return与def generate():是同级的

from flask import Flask, Response

app = Flask(__name__)

@app.route('/stream')
def stream_data():
    def generate():
        for i in range(5):
        	time.sleep(1)
            yield f"Data chunk {i}\0"  # 在每个数据块后添加换行符

    return Response(generate(), mimetype='text/plain')

if __name__ == '__main__':
    app.run(debug=True)

2、iter_lines,iter_content遍历区别

iter_lines()方法是按行读取服务器返回的数据流。它会在遇到换行符或指定的分隔符(delimiter=b"\0")时,将数据流分割成多个块
iter_content()方法会在每次读取到指定大小的数据块时就返回该数据块,而不需要等待换行符或特定分隔符

1)iter_lines
服务端:

@app.route('/stream')
def stream_data():
    def generate():
        for i in range(5):
        	time.sleep(1)
            yield f"Data chunk {i}\0"  # 在每个数据块后添加换行符

    return Response(generate(), mimetype='text/plain')

客服端:

import requests

url = 'http://localhost:5000/stream'
response = requests.get(url, stream=True)

for line in response.iter_lines(chunk_size=1024, decode_unicode=False,delimiter=b"\0"):
    if line:
        print(line.decode('utf-8'), end='', flush=True) ##流式打印

2)iter_content

服务端:


@app.route('/stream')
def stream_data():
    def generate():
         for i in range(5):
            time.sleep(1)
            yield f"Data chunk {i}" 

客户端:

import requests

url = 'http://localhost:5000/stream'
response = requests.get(url, stream=True)

for chunk in response.iter_content(chunk_size=10, decode_unicode=True):
    if chunk:
        print(chunk, end='', flush=True)

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 06:58:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 06:58:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 06:58:05       87 阅读
  4. Python语言-面向对象

    2024-04-02 06:58:05       96 阅读

热门阅读

  1. 【OpenCV-环境搭建】

    2024-04-02 06:58:05       39 阅读
  2. 【C/C++】C语言实现顺序表

    2024-04-02 06:58:05       33 阅读
  3. 手搓ajax的封装

    2024-04-02 06:58:05       39 阅读
  4. npm常用命令详解

    2024-04-02 06:58:05       39 阅读
  5. js怎样获取到时间戳?

    2024-04-02 06:58:05       36 阅读
  6. 给手机换电池、贴膜:VIVO服务还是非常好的

    2024-04-02 06:58:05       159 阅读
  7. R语言基础入门教程

    2024-04-02 06:58:05       40 阅读
  8. Linux 安装apache

    2024-04-02 06:58:05       35 阅读
  9. docker搭建Linuxserver/tvheadend

    2024-04-02 06:58:05       37 阅读