Spaces:
Running
Running
Debug - Socket
Browse files- app/main.py +5 -13
app/main.py
CHANGED
@@ -13,7 +13,7 @@ from fastapi import FastAPI, Depends # Import FastAPI itself
|
|
13 |
from .database import connect_db, disconnect_db, database, metadata, users
|
14 |
from .api import router as api_router
|
15 |
from . import schemas, auth, dependencies
|
16 |
-
|
17 |
# --- Import SQLAlchemy helpers for DDL generation ---
|
18 |
from sqlalchemy.schema import CreateTable
|
19 |
from sqlalchemy.dialects import sqlite # Assuming SQLite, adjust if needed
|
@@ -126,22 +126,16 @@ async def listen_to_websockets(token: str, notification_state: list):
|
|
126 |
logger.info(f"[{ws_listener_id}] Attempting to connect to WebSocket: {ws_url}")
|
127 |
|
128 |
try:
|
129 |
-
# --- CORRECTED CONTEXT MANAGER USAGE ---
|
130 |
-
# Use websockets.connect directly, passing timeout parameters
|
131 |
-
# open_timeout controls connection establishment timeout
|
132 |
async with websockets.connect(ws_url, open_timeout=15.0) as websocket:
|
133 |
-
# --- END CORRECTION ---
|
134 |
logger.info(f"[{ws_listener_id}] WebSocket connected successfully to {ws_url}")
|
135 |
|
136 |
-
# ---
|
137 |
-
#
|
138 |
-
|
139 |
-
|
140 |
-
# --- End check ---
|
141 |
|
142 |
while True:
|
143 |
try:
|
144 |
-
# Add recv timeout (optional, but good practice)
|
145 |
message_str = await asyncio.wait_for(websocket.recv(), timeout=300.0) # e.g., 5 min timeout
|
146 |
logger.info(f"[{ws_listener_id}] Received raw message: {message_str}")
|
147 |
try:
|
@@ -164,9 +158,7 @@ async def listen_to_websockets(token: str, notification_state: list):
|
|
164 |
logger.error(f"[{ws_listener_id}] Error processing received message: {parse_err}")
|
165 |
|
166 |
except asyncio.TimeoutError:
|
167 |
-
# No message received within timeout, keep connection alive (ping might be needed for long silences)
|
168 |
logger.debug(f"[{ws_listener_id}] WebSocket recv timed out, continuing loop.")
|
169 |
-
# Consider sending a ping if needed: await websocket.ping()
|
170 |
continue
|
171 |
except websockets.ConnectionClosedOK:
|
172 |
logger.info(f"[{ws_listener_id}] WebSocket connection closed normally.")
|
|
|
13 |
from .database import connect_db, disconnect_db, database, metadata, users
|
14 |
from .api import router as api_router
|
15 |
from . import schemas, auth, dependencies
|
16 |
+
from .websocket import manager
|
17 |
# --- Import SQLAlchemy helpers for DDL generation ---
|
18 |
from sqlalchemy.schema import CreateTable
|
19 |
from sqlalchemy.dialects import sqlite # Assuming SQLite, adjust if needed
|
|
|
126 |
logger.info(f"[{ws_listener_id}] Attempting to connect to WebSocket: {ws_url}")
|
127 |
|
128 |
try:
|
|
|
|
|
|
|
129 |
async with websockets.connect(ws_url, open_timeout=15.0) as websocket:
|
|
|
130 |
logger.info(f"[{ws_listener_id}] WebSocket connected successfully to {ws_url}")
|
131 |
|
132 |
+
# --- REMOVE or COMMENT OUT this debug line ---
|
133 |
+
# await asyncio.sleep(0.5)
|
134 |
+
# logger.info(f"[{ws_listener_id}] Connections according to manager after connect: {manager.active_connections}")
|
135 |
+
# --- End removal ---
|
|
|
136 |
|
137 |
while True:
|
138 |
try:
|
|
|
139 |
message_str = await asyncio.wait_for(websocket.recv(), timeout=300.0) # e.g., 5 min timeout
|
140 |
logger.info(f"[{ws_listener_id}] Received raw message: {message_str}")
|
141 |
try:
|
|
|
158 |
logger.error(f"[{ws_listener_id}] Error processing received message: {parse_err}")
|
159 |
|
160 |
except asyncio.TimeoutError:
|
|
|
161 |
logger.debug(f"[{ws_listener_id}] WebSocket recv timed out, continuing loop.")
|
|
|
162 |
continue
|
163 |
except websockets.ConnectionClosedOK:
|
164 |
logger.info(f"[{ws_listener_id}] WebSocket connection closed normally.")
|