Skip to content

Commit 3c9095c

Browse files
chore: browser websocket connection (#3092)
1 parent 0c822c7 commit 3c9095c

File tree

1 file changed

+56
-8
lines changed

1 file changed

+56
-8
lines changed

camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py

Lines changed: 56 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,20 @@ async def start(self):
264264
self.ts_log_file.close()
265265
self.ts_log_file = None
266266
self.process = None
267-
raise RuntimeError(
268-
"WebSocket server failed to start within timeout"
269-
)
267+
268+
error_msg = "WebSocket server failed to start within timeout"
269+
import psutil
270+
271+
mem = psutil.virtual_memory()
272+
if mem.available < 1024**3: # Less than 1GB available
273+
error_msg = (
274+
f"WebSocket server failed to start"
275+
f"(likely due to insufficient memory). "
276+
f"Available memory: {mem.available / 1024**3:.2f}GB "
277+
f"({mem.percent}% used)"
278+
)
279+
280+
raise RuntimeError(error_msg)
270281

271282
# Connect to the WebSocket server
272283
try:
@@ -291,9 +302,21 @@ async def start(self):
291302
self.ts_log_file.close()
292303
self.ts_log_file = None
293304
self.process = None
294-
raise RuntimeError(
295-
f"Failed to connect to WebSocket server: {e}"
296-
) from e
305+
306+
error_msg = f"Failed to connect to WebSocket server: {e}"
307+
import psutil
308+
309+
mem = psutil.virtual_memory()
310+
if mem.available < 1024**3: # Less than 1GB available
311+
error_msg = (
312+
f"Failed to connect to WebSocket server"
313+
f"(likely due to insufficient memory). "
314+
f"Available memory: {mem.available / 1024**3:.2f}GB"
315+
f"({mem.percent}% used). "
316+
f"Original error: {e}"
317+
)
318+
319+
raise RuntimeError(error_msg) from e
297320

298321
# Start the background receiver task
299322
self._receive_task = asyncio.create_task(self._receive_loop())
@@ -443,7 +466,19 @@ async def _receive_loop(self):
443466
async def _ensure_connection(self) -> None:
444467
"""Ensure WebSocket connection is alive."""
445468
if not self.websocket:
446-
raise RuntimeError("WebSocket not connected")
469+
error_msg = "WebSocket not connected"
470+
import psutil
471+
472+
mem = psutil.virtual_memory()
473+
if mem.available < 1024**3: # Less than 1GB available
474+
error_msg = (
475+
f"WebSocket not connected "
476+
f"(likely due to insufficient memory). "
477+
f"Available memory: {mem.available / 1024**3:.2f}GB "
478+
f"({mem.percent}% used)"
479+
)
480+
481+
raise RuntimeError(error_msg)
447482

448483
# Check if connection is still alive
449484
try:
@@ -453,7 +488,20 @@ async def _ensure_connection(self) -> None:
453488
except Exception as e:
454489
logger.warning(f"WebSocket ping failed: {e}")
455490
self.websocket = None
456-
raise RuntimeError("WebSocket connection lost")
491+
492+
error_msg = "WebSocket connection lost"
493+
import psutil
494+
495+
mem = psutil.virtual_memory()
496+
if mem.available < 1024**3: # Less than 1GB available
497+
error_msg = (
498+
f"WebSocket connection lost "
499+
f"(likely due to insufficient memory). "
500+
f"Available memory: {mem.available / 1024**3:.2f}GB "
501+
f"({mem.percent}% used)"
502+
)
503+
504+
raise RuntimeError(error_msg)
457505

458506
async def _send_command(
459507
self, command: str, params: Dict[str, Any]

0 commit comments

Comments
 (0)