Spaces:
Paused
Paused
| import asyncio | |
| import logging | |
| import uuid | |
| from fastapi import Depends, WebSocket, WebSocketDisconnect | |
| from models import WebSocketConnectionManager | |
| from ..dependencies import get_log_ws_manager, get_logger | |
| async def websocket_log_endpoint( | |
| websocket: WebSocket, | |
| logger: logging.Logger = Depends(get_logger), | |
| log_ws_manager: WebSocketConnectionManager = Depends(get_log_ws_manager), | |
| ): | |
| if not log_ws_manager: | |
| await websocket.close(code=1011) | |
| return | |
| client_id = str(uuid.uuid4()) | |
| try: | |
| await log_ws_manager.connect(client_id, websocket) | |
| while True: | |
| await websocket.receive_text() | |
| except WebSocketDisconnect: | |
| pass | |
| except asyncio.CancelledError: | |
| raise | |
| except Exception as e: | |
| logger.error( | |
| f"Log WebSocket (client {client_id}) encountered an exception: {e}", | |
| exc_info=True, | |
| ) | |
| finally: | |
| log_ws_manager.disconnect(client_id) | |