INNER CODE UNIT · Rust
spawn_reaper
EricLBuehler/mistral.rs · mistralrs-code-exec/src/lib.rs:279
fn spawn_reaper(sessions: Arc<Mutex<HashMap<String, Arc<Mutex<PythonSession>>>>>) {
tokio::spawn(async move {
loop {
tokio::time::sleep(REAP_INTERVAL).await;
let mut map = sessions.lock().await;
let before = map.len();
let mut to_remove = Vec::new();
for (id, session_arc) in map.iter() {
if let Ok(session) = session_arc.try_lock() {
if session.seconds_since_last_active() >= SESSION_TTL.as_secs() {
to_remove.push(id.clone());
}
}
}
for id in &to_remove {
map.remove(id);
}
let reaped = before - map.len();