python network_error ai_generated true

fastapi.WebSocketDisconnect: code=1006, reason=''

ID: python/fastapi-websocket-disconnect-error

Also available as: JSON · Markdown · 中文
80%Fix Rate
82%Confidence
0Evidence
2024-07-25First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.x active

Root Cause

WebSocket连接被异常关闭,通常由于网络问题或客户端崩溃

generic

中文

WebSocket连接被异常关闭,通常由于网络问题或客户端崩溃

Workarounds

  1. 95% success 在WebSocket端点中捕获断开异常
    from fastapi import WebSocketDisconnect
    async def websocket_endpoint(websocket: WebSocket):
        await websocket.accept()
        try:
            while True:
                data = await websocket.receive_text()
        except WebSocketDisconnect:
            print('Client disconnected')
  2. 85% success 实现自动重连逻辑
    async def connect_with_retry():
        while True:
            try:
                await websocket.accept()
                break
            except WebSocketDisconnect:
                await asyncio.sleep(1)

Dead Ends

Common approaches that don't work:

  1. 尝试在WebSocket处理中忽略断开异常 60% fail

    忽略异常会导致无限循环或资源泄漏

  2. 使用全局异常捕获所有异常 40% fail

    WebSocketDisconnect是特定异常,全局捕获可能不处理