前情提要
运行Langchain-Chatchat项目,使用自定义请求访问API Server流式输出
报错展示
b': ping - 2024-05-22 00:46:04.832520+00:00\r\n\r\n'
报错原因
这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制,以确保连接保持活跃。一些 SSE 实现会定期发送 ping 消息,以防止连接超时或被关闭。
解决方案
1、降低sse_starlette版本为1.8.2
我之前用的是2.1.0,不想降低版本用第二个方法
2、EventSourceResponse函数中注释304~311行
if self.ping_message_factory:
assert isinstance(self.ping_message_factory, Callable) # type: ignore # https://github.com/python/mypy/issues/6864
ping = (
ServerSentEvent(comment=f"ping - {datetime.utcnow()}").encode()
if self.ping_message_factory is None
else ensure_bytes(self.ping_message_factory(), self.sep)
)
_log.debug(f"ping: {ping.decode()}")