python network_error ai_generated true

运行时错误:WebSocket连接意外关闭

RuntimeError: WebSocket connection closed unexpectedly

ID: python/starlette-websocket-connection-closed

其他格式: JSON · Markdown 中文 · English
80%修复率
82%置信度
0证据数
2024-08-20首次发现

版本兼容性

版本状态引入弃用备注
3.x active

根因分析

客户端或服务器端非正常关闭WebSocket连接

English

客户端或服务器端非正常关闭WebSocket连接

generic

解决方案

  1. 90% 成功率 在WebSocket处理中添加重连逻辑
    async def websocket_endpoint(websocket):
        await websocket.accept()
        try:
            while True:
                data = await websocket.receive_text()
        except WebSocketDisconnect:
            print('Client disconnected')
  2. 85% 成功率 使用心跳检测保持连接
    async def heartbeat(websocket):
        while True:
            await asyncio.sleep(30)
            await websocket.send_text('ping')

无效尝试

常见但无效的做法:

  1. 尝试重新连接而不处理关闭原因 50% 失败

    未处理关闭原因可能导致无限重连

  2. 在接收消息时不检查连接状态 40% 失败

    已关闭的连接无法接收消息