python runtime_error ai_generated true

Starlette WebSocket 断开:代码=1000,原因='客户端断开连接'

starlette.websockets.WebSocketDisconnect: code=1000, reason='Client disconnected'

ID: python/starlette-websocket-disconnect-message

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

版本兼容性

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

根因分析

WebSocket 客户端意外断开连接,服务器端未处理该异常。

English

WebSocket 客户端意外断开连接,服务器端未处理该异常。

generic

解决方案

  1. 98% 成功率
    @app.websocket('/ws')
    async def ws_endpoint(websocket: WebSocket):
        await websocket.accept()
        try:
            while True:
                data = await websocket.receive_text()
        except WebSocketDisconnect:
            print('Client disconnected')
            # 清理资源

无效尝试

常见但无效的做法:

  1. 60% 失败

    如果不处理,服务器会崩溃或挂起

  2. 90% 失败

    客户端已经断开,重新连接需要客户端主动发起