MCPcopy Create free account
hub / github.com/CJackHwang/AIstudioProxyAPI / enhanced_disconnect_monitor

Function enhanced_disconnect_monitor

api_utils/client_connection.py:68–98  ·  view source on GitHub ↗

Monitors for client disconnect during streaming. Returns True if disconnected, False otherwise.

(
    req_id: str,
    http_request: Request,
    completion_event: asyncio.Event,
    logger: Any,
)

Source from the content-addressed store, hash-verified

66
67
68async def enhanced_disconnect_monitor(
69 req_id: str,
70 http_request: Request,
71 completion_event: asyncio.Event,
72 logger: Any,
73) -> bool:
74 """
75 Monitors for client disconnect during streaming.
76 Returns True if disconnected, False otherwise.
77 """
78 disconnect_detection_count = 0
79 while not completion_event.is_set():
80 try:
81 is_connected = await check_client_connection(req_id, http_request)
82 if not is_connected:
83 disconnect_detection_count += 1
84 if disconnect_detection_count >= 3:
85 logger.info(
86 f"[{req_id}] Client disconnect confirmed during streaming."
87 )
88 completion_event.set()
89 return True
90 else:
91 disconnect_detection_count = 0
92 await asyncio.sleep(0.2)
93 except asyncio.CancelledError:
94 break
95 except Exception as e:
96 logger.error(f"[{req_id}] Error in enhanced_disconnect_monitor: {e}")
97 break
98 return False
99
100
101async def non_streaming_disconnect_monitor(

Callers

nothing calls this directly

Calls 4

check_client_connectionFunction · 0.85
infoMethod · 0.80
setMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected