Spaces:
Sleeping
Sleeping
| # backend/services/cache_manager.py | |
| import time | |
| from typing import Dict, Optional, Any | |
| class CacheManager: | |
| """ | |
| Gestionnaire de cache frugal en mémoire. | |
| Remplace Redis pour limiter les dépendances et la consommation de ressources. | |
| """ | |
| _instance = None | |
| _cache: Dict[str, Dict[str, Any]] = {} | |
| def __new__(cls): | |
| if cls._instance is None: | |
| cls._instance = super(CacheManager, cls).__new__(cls) | |
| print("Cache Manager local (in-memory) initialisé.") | |
| return cls._instance | |
| def get(self, key: str) -> Optional[Any]: | |
| """Récupère une valeur depuis le cache si elle n'est pas expirée.""" | |
| if key in self._cache: | |
| item = self._cache[key] | |
| if item["expires"] > time.time(): | |
| return item["value"] | |
| else: | |
| # Supprimer si expiré | |
| del self._cache[key] | |
| return None | |
| def set(self, key: str, value: Any, ttl: int = 3600): | |
| """Stocke une valeur dans le cache avec une durée de vie (ttl) en secondes.""" | |
| self._cache[key] = { | |
| "value": value, | |
| "expires": time.time() + ttl | |
| } |