EventSourceResponse

EventSourceResponse 是来源于 sse-starlette 库的一个类,它主要用于构建Server-Sent Events (SSE)响应。Server-Sent Events 是一种允许服务器向浏览器发送实时更新的技术,常用于实现实时推送通知、股票报价更新、聊天应用等场景。

在 Starlette 和 FastAPI 等基于异步的Web框架中,EventSourceResponse 类可以帮助开发者轻松创建 SSE 结构的HTTP响应,这种响应能持续保持连接,并在服务器端有新事件发生时,通过此连接将事件数据推送给客户端。

使用 EventSourceResponse 的典型方法是创建一个实例,并传入一个生成器或异步生成器,这个生成器负责产生要推送的事件内容。客户端浏览器通过 EventSource API 订阅服务器提供的SSE资源,每当服务器通过 EventSourceResponse 发送一个事件时,客户端的 onmessage 事件处理器就会被触发。

举个简单的例子:

复制代码
from sse_starlette.sse import EventSourceResponse
import asyncio

async def event_generator():
    for i in range(100):
        await asyncio.sleep(1)  # 模拟延迟
        yield "data: This is event number {}\n\n".format(i)

@app.route("/events", methods=["GET"])
async def stream_events(request):
    return EventSourceResponse(event_generator())
复制代码

在这个例子中,当客户端访问 /events 路由时,将得到一个持续的SSE连接,在接下来的100秒内,每隔一秒服务器将通过这个连接推送一个新的事件到客户端。

posted @   levylaw  阅读(1164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示