File size: 1,198 Bytes
45021e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import uuid
import streamlit as st
import os
import time
import sys
import shutil

MAX_DIR_AGE_SECONDS = 1800

def get_session_id():
    if 'session_id' not in st.session_state:
        st.session_state.session_id = str(uuid.uuid4())
    return st.session_state.session_id


def cleanup_stale_directories(base_dir: str):
    """Deletes directories under base_dir older than MAX_DIR_AGE_SECONDS."""
    now = time.time()
    for item_name in os.listdir(base_dir):
        item_path = os.path.join(base_dir, item_name)
        
        if os.path.isdir(item_path):
            try:
                mtime = os.path.getmtime(item_path)
                if (now - mtime) > MAX_DIR_AGE_SECONDS:
                    shutil.rmtree(item_path)
                    print(f"Cleaned up stale directory: {item_path}", file=sys.stderr)
            except Exception as e:
                print(f"Error cleaning directory {item_path}: {e}", file=sys.stderr)
                pass

def get_session_temp_dir(main_data_dir):
    cleanup_stale_directories(main_data_dir)
    session_id = get_session_id()
    temp_dir = os.path.join(main_data_dir, session_id)
    os.makedirs(temp_dir, exist_ok=True)
    return temp_dir