chatgpt再封装中采用流式输出

服务器发SSE是基于HTTP的,所以我们可以用http的方式去和服务端建立通信,这样少了一些学习成本它是单向通信:即客户端向服务器建立连接后,服务器持续向客户端疯狂输出
这个和websocket不同,websocket是双向通信SSE返回的是事件流类型,事件流中包含标识符、类型、数据、注释,这些都是可选字段

FastAPI 是一个 Python 框架,可以轻松构建 API。

在本教程中,我们将使用 FastAPI 创建一个简单的 SSE 服务器,它将每秒发送一条消息。

Python sse-starlette包_程序模块 - PyPI - Python中文网

from fastapi import FastAPI
from fastapi.responses import HTMLResponse
import uvicorn
import time 
from sse_starlette.sse import ServerSentEvent, EventSourceResponse
import json

app = FastAPI()

def gen():
    for i in range(10):
        time.sleep(1)
        yield {"data":str(i)}


@app.get("/items/")
async def read_items():
    html_content = """
    <html>
        <head>
            <title>Some HTML in here</title>
        </head>
        <body>
            <h1>Look ma! HTML!</h1>
        </body>
    </html>
    """
    return HTMLResponse(content=html_content, status_code=200)

@app.get("/")
def main():
    def decorate(generator):
        for item in generator:
            yield ServerSentEvent(json.dumps(item, ensure_ascii=False), event='delta')
    return EventSourceResponse(decorate(gen()))
if __name__ == '__main__':
    uvicorn.run(app, host="0.0.0.0", port=9550)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值