gitscope
← marzneshin / Diff · 00ca64e → 00ca64e
Changes 00ca64e..00ca64e
Patch commit
diff --git a/app/routes/node.py b/app/routes/node.py
index 84a1e34..973efcb 100644
--- a/app/routes/node.py
+++ b/app/routes/node.py
@@ -7,7 +7,8 @@ from fastapi import APIRouter, Body, Query
from fastapi import HTTPException, WebSocket
from fastapi_pagination.ext.sqlalchemy import paginate
from fastapi_pagination.links import Page
-from starlette.websockets import WebSocketDisconnect
+from starlette.websockets import WebSocketDisconnect, WebSocketState
+from grpclib.exceptions import StreamTerminatedError, GRPCError
from app import marznode
from app.db import crud, get_tls_certificate
@@ -109,12 +110,14 @@ async def node_logs(
async for line in marznode.nodes[node_id].get_logs(
name=backend, include_buffer=include_buffer
):
- try:
- await websocket.send_text(line)
- except WebSocketDisconnect:
- break
+ await websocket.send_text(line)
+ except WebSocketDisconnect:
+ logger.debug("websocket disconnected")
+ except (StreamTerminatedError, GRPCError):
+ logger.info("node %i detached", node_id)
finally:
- await websocket.close()
+ if websocket.state == WebSocketState.CONNECTED:
+ await websocket.close()
@router.put("/{node_id}", response_model=NodeResponse)