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