Monitors for client disconnect during streaming. Returns True if disconnected, False otherwise.
(
req_id: str,
http_request: Request,
completion_event: asyncio.Event,
logger: Any,
)
| 66 | |
| 67 | |
| 68 | async 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 | |
| 101 | async def non_streaming_disconnect_monitor( |
nothing calls this directly
no test coverage detected