Spaces:
Runtime error
Runtime error
da03
commited on
Commit
·
e7ad005
1
Parent(s):
7bc09fd
main.py
CHANGED
@@ -297,6 +297,7 @@ async def websocket_endpoint(websocket: WebSocket):
|
|
297 |
last_user_activity_time = time.perf_counter()
|
298 |
timeout_warning_sent = False
|
299 |
timeout_task = None
|
|
|
300 |
|
301 |
# Start timing for global FPS calculation
|
302 |
connection_start_time = time.perf_counter()
|
@@ -384,10 +385,15 @@ async def websocket_endpoint(websocket: WebSocket):
|
|
384 |
|
385 |
# Add timeout checking function
|
386 |
async def check_timeout():
|
387 |
-
nonlocal timeout_warning_sent, timeout_task
|
388 |
|
389 |
while True:
|
390 |
try:
|
|
|
|
|
|
|
|
|
|
|
391 |
current_time = time.perf_counter()
|
392 |
time_since_activity = current_time - last_user_activity_time
|
393 |
|
@@ -701,12 +707,19 @@ async def websocket_endpoint(websocket: WebSocket):
|
|
701 |
|
702 |
finally:
|
703 |
# Clean up timeout task
|
|
|
|
|
704 |
if timeout_task and not timeout_task.done():
|
|
|
705 |
timeout_task.cancel()
|
706 |
try:
|
707 |
await timeout_task
|
|
|
708 |
except asyncio.CancelledError:
|
|
|
709 |
pass
|
|
|
|
|
710 |
|
711 |
# Print final FPS statistics when connection ends
|
712 |
if frame_num >= 0: # Only if we processed at least one frame
|
|
|
297 |
last_user_activity_time = time.perf_counter()
|
298 |
timeout_warning_sent = False
|
299 |
timeout_task = None
|
300 |
+
connection_active = True # Flag to track if connection is still active
|
301 |
|
302 |
# Start timing for global FPS calculation
|
303 |
connection_start_time = time.perf_counter()
|
|
|
385 |
|
386 |
# Add timeout checking function
|
387 |
async def check_timeout():
|
388 |
+
nonlocal timeout_warning_sent, timeout_task, connection_active
|
389 |
|
390 |
while True:
|
391 |
try:
|
392 |
+
# Check if WebSocket is still connected and connection is still active
|
393 |
+
if not connection_active or websocket.client_state.value >= 2: # CLOSING or CLOSED
|
394 |
+
print(f"[{time.perf_counter():.3f}] Connection inactive or WebSocket closed, stopping timeout check for client {client_id}")
|
395 |
+
return
|
396 |
+
|
397 |
current_time = time.perf_counter()
|
398 |
time_since_activity = current_time - last_user_activity_time
|
399 |
|
|
|
707 |
|
708 |
finally:
|
709 |
# Clean up timeout task
|
710 |
+
print(f"[{time.perf_counter():.3f}] Cleaning up connection {client_id}")
|
711 |
+
connection_active = False # Signal that connection is being cleaned up
|
712 |
if timeout_task and not timeout_task.done():
|
713 |
+
print(f"[{time.perf_counter():.3f}] Cancelling timeout task for client {client_id}")
|
714 |
timeout_task.cancel()
|
715 |
try:
|
716 |
await timeout_task
|
717 |
+
print(f"[{time.perf_counter():.3f}] Timeout task cancelled successfully for client {client_id}")
|
718 |
except asyncio.CancelledError:
|
719 |
+
print(f"[{time.perf_counter():.3f}] Timeout task cancelled with CancelledError for client {client_id}")
|
720 |
pass
|
721 |
+
else:
|
722 |
+
print(f"[{time.perf_counter():.3f}] Timeout task already done or doesn't exist for client {client_id}")
|
723 |
|
724 |
# Print final FPS statistics when connection ends
|
725 |
if frame_num >= 0: # Only if we processed at least one frame
|