CoolFace
Apppublic

PriyaPbs/ModelOptix

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
state.py64 linesDownload Raw Back to utils
1import json2import os3import threading4 5BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))6FALLBACK_FILE = os.path.join(BASE_DIR, "data", "state_fallback.json")7STATE_LOCK = threading.RLock()8 9 10def _load_fallback():11    with STATE_LOCK:12        if os.path.exists(FALLBACK_FILE):13            try:14                with open(FALLBACK_FILE, "r") as f:15                    return json.load(f)16            except Exception:17                return {}18        return {}19 20 21def _save_fallback(data):22    with STATE_LOCK:23        os.makedirs(os.path.dirname(FALLBACK_FILE), exist_ok=True)24        temp_file = f"{FALLBACK_FILE}.tmp"25        with open(temp_file, "w") as f:26            json.dump(data, f)27            f.flush()28            os.fsync(f.fileno())29        os.replace(temp_file, FALLBACK_FILE)30 31 32class RedisDict:33    def __init__(self, prefix, client=None, ttl_seconds=86400):34        self.prefix = prefix35        self.client = None36 37    def _get_memory_store(self):38        return _load_fallback().get(self.prefix, {})39 40    def _set_memory_store(self, key, value):41        data = _load_fallback()42        data.setdefault(self.prefix, {})[key] = value43        _save_fallback(data)44 45    def __setitem__(self, key, value):46        self._set_memory_store(key, value)47 48    def __getitem__(self, key):49        store = self._get_memory_store()50        if key not in store:51            raise KeyError(key)52        return store[key]53 54    def get(self, key, default=None):55        return self._get_memory_store().get(key, default)56 57    def __contains__(self, key):58        return key in self._get_memory_store()59 60 61UPLOAD_JOBS = RedisDict("upload")62CONFIG_JOBS = RedisDict("config")63TRAINING_JOBS = RedisDict("training")64