Download backend/cache/cache_manager.py from Really-amin/Datasourceforcryptocurrency-5: direct link, hf CLI and curl.
- Browser
- Download file 975 Bytes
-
https://huggingface.co/spaces/Really-amin/Datasourceforcryptocurrency-5/resolve/main/backend/cache/cache_manager.py
- Command line
-
hf download hf://spaces/Really-amin/Datasourceforcryptocurrency-5/backend/cache/cache_manager.py
-
curl -L -o cache_manager.py https://huggingface.co/spaces/Really-amin/Datasourceforcryptocurrency-5/resolve/main/backend/cache/cache_manager.py
975 Bytes
| import time | |
| import asyncio | |
| from typing import Any, Dict, Optional, Tuple | |
| class CacheManager: | |
| def __init__(self): | |
| self._cache: Dict[str, Tuple[Any, float]] = {} | |
| self._lock = asyncio.Lock() | |
| async def get(self, key: str) -> Optional[Any]: | |
| async with self._lock: | |
| if key in self._cache: | |
| value, expiry = self._cache[key] | |
| if time.time() < expiry: | |
| return value | |
| else: | |
| del self._cache[key] | |
| return None | |
| async def set(self, key: str, value: Any, ttl: int = 60): | |
| async with self._lock: | |
| self._cache[key] = (value, time.time() + ttl) | |
| async def delete(self, key: str): | |
| async with self._lock: | |
| if key in self._cache: | |
| del self._cache[key] | |
| async def clear(self): | |
| async with self._lock: | |
| self._cache.clear() | |
| # Global cache instance | |
| cache_manager = CacheManager() | |