python network_error ai_generated true

FastAPI WebSocket断开连接:代码=1006,原因=''

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

ID: python/fastapi-websocket-disconnect-error

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

版本兼容性

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

根因分析

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

English

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

generic

解决方案

  1. 95% 成功率 在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% 成功率 实现自动重连逻辑
    async def connect_with_retry():
        while True:
            try:
                await websocket.accept()
                break
            except WebSocketDisconnect:
                await asyncio.sleep(1)

无效尝试

常见但无效的做法:

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

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

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

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