fastapi ServerSentEvent
时间: 2023-12-03 07:40:04 浏览: 191
FastAPI是一个现代的,快速(高性能)的Web框架,用于构建API。它支持异步请求处理,具有自动文档生成和类型注释等功能。而Server-Sent Events(SSE)是一种基于HTTP的服务器推送技术,允许服务器向客户端发送事件流。FastAPI提供了对SSE的支持,可以使用FastAPI的StreamingResponse类来实现SSE。
下面是一个使用FastAPI实现SSE的示例代码:
```python
from fastapi import FastAPI, Response, status
from fastapi.responses import StreamingResponse
import time
app = FastAPI()
async def event_stream():
for i in range(10):
yield f"data: {i}\n\n"
time.sleep(1)
@app.get("/stream")
async def stream(response: Response):
response.headers["Content-Type"] = "text/event-stream"
return StreamingResponse(event_stream())
```
在上面的代码中,我们定义了一个名为event_stream的异步生成器,它会生成10个事件。然后我们定义了一个名为stream的路由,它会返回一个StreamingResponse对象,该对象使用event_stream生成的事件流作为响应体,并设置Content-Type头为text/event-stream。
你可以使用curl或类似的工具测试这个API:
```
curl http://localhost:8000/stream
```
你会看到类似下面的输出:
```
data: 0
data: 1
data: 2
data: 3
data: 4
data: 5
data: 6
data: 7
data: 8
data: 9
```
阅读全文