python如何流模式输出

博主使用的是fastapi,代码如下:

from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import json
import asyncio

@app.get("/test")
async def test():
    async def generate():
        # 发送初始的空格,确保浏览器开始接收数据
        yield b" " * 1024  # Chrome 需要至少 2048 字节,Firefox 需要 1024 字节
        await asyncio.sleep(0.1)  # 确保数据被发送

        data = ["你好啊,", "有缘之人,", "欢迎来", "到宝可梦", "的世界,", "请你选择第一只小精灵吧!!!"]
        for item in data:
            yield f"data: {json.dumps({'status': 1, 'msg': 'success', 'data': item}, ensure_ascii=False)}\n\n".encode("utf-8")
            await asyncio.sleep(1)  # 模拟延时

    return StreamingResponse(generate(), media_type="text/event-stream")

注意:apifox调试工具可能存在同时返回的情况,可在浏览器测试或cmd测试
cmd命令:

curl -N http://127.0.0.1:8000/test

你可能感兴趣的:(python,开发语言)