@@ -36,15 +36,18 @@ def get_session_dependency(session_id: str) -> GameSession:
36
36
async def cleanup_inactive_sessions ():
37
37
print (f"{ datetime .now ()} : Cleaning up sessions..." )
38
38
39
- for session_id , session in list (sessions .items ()):
40
- must_be_dropped = session .is_game_over or session .is_abandoned ()
41
-
42
- if session .is_abandoned ():
43
- game_metrics .update_on_game_abandoned (len (sessions ) - 1 )
39
+ sessions_to_drop = []
44
40
45
- if must_be_dropped :
41
+ for session_id , session in list (sessions .items ()):
42
+ is_abandoned = session .is_abandoned ()
43
+ if session .is_game_over or is_abandoned :
46
44
print (f"{ datetime .now ()} : Session '{ session_id } ' will be dropped" )
47
- sessions .pop (session_id )
45
+ sessions_to_drop .append ((session_id , is_abandoned ))
46
+
47
+ for session_id , is_abandoned in sessions_to_drop :
48
+ sessions .pop (session_id )
49
+ if is_abandoned :
50
+ game_metrics .update_on_game_abandoned (len (sessions ))
48
51
49
52
50
53
@router .on_event ("shutdown" )
@@ -68,7 +71,7 @@ def publishing_func(game_session: GameSession) -> None:
68
71
session = GameSession .new_game_session (_id = new_session_id , _state_publish_function = publishing_func )
69
72
sessions [new_session_id ] = session
70
73
71
- game_metrics .update_on_game_started (len (sessions ))
74
+ game_metrics .update_on_game_started (len (sessions ))
72
75
73
76
return GameSessionDTO .from_session (sessions [new_session_id ])
74
77
0 commit comments