Spaces:
Running
Running
| 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 | |