unik-ml / cache /local_cache.py
RoniFinTech's picture
cache-fix
afc8995
raw
history blame
1.01 kB
from datetime import datetime, timedelta
from functools import wraps
CACHE_SIZE = 50
_cache = {}
_cache_time = {}
def ttl_cache(key_name, ttl_secs=20):
def decorator(func):
@wraps(func)
async def wrapper(*args, **kwargs):
# Assuming the prompt is the key for caching, change as necessary
key = kwargs.get(key_name)
ttl = timedelta(seconds=ttl_secs)
# Check cache
if key in _cache:
if datetime.now() - _cache_time[key] > ttl:
# Cache has expired
del _cache[key]
del _cache_time[key]
else:
return _cache[key]
# Call the actual function if not in cache or expired
response = await func(*args, **kwargs)
# Cache the result
_cache[key] = response
_cache_time[key] = datetime.now()
return response
return wrapper
return decorator