Starlette的SSE插件
sse-starlette的Python项目详细描述
服务器发送了Starlette和FastAPI的事件
背景:https://sysid.github.io/sse/
安装:
pip install sse-starlette
用法:
^{pr2}$输出:
警告:SSE流不能与GZipMiddleware结合使用。在
请注意,要正确关闭服务器,应用程序必须停止所有
运行任务(生成器)。否则,您可能会遇到以下警告
关闭时:Waiting for background tasks to complete. (CTRL+C to force quit)
。在
客户端断开连接需要在请求处理程序中处理(请参见示例.py)公司名称:
asyncdefendless(req:Request):asyncdefevent_publisher():i=0try:whileTrue:disconnected=awaitreq.is_disconnected()ifdisconnected:_log.info(f"Disconnecting client {req.client}")breaki+=1yielddict(data=i)awaitasyncio.sleep(0.2)_log.info(f"Disconnected from client {req.client}")exceptasyncio.CancelledErrorase:_log.info(f"Disconnected from client (via refresh/close) {req.client}")# Do any other cleanup, if anyraiseereturnEventSourceResponse(event_publisher())
运行测试:
maketest
变更日志
0.6.0(2020-10-24)
- 在使用uvicorn的情况下:monkeypatch uvicorn信号处理程序, 为了优雅地关闭长时间运行的处理程序/生成器。在
- 项目
标签: