dogpiled-cache-authors
This commit is contained in:
@@ -1,26 +1,11 @@
|
||||
from functools import wraps
|
||||
|
||||
from dogpile.cache import make_region
|
||||
|
||||
# Создание региона кэша с TTL 300 секунд
|
||||
cache_region = make_region().configure('dogpile.cache.memory', expiration_time=300)
|
||||
from settings import REDIS_URL
|
||||
|
||||
|
||||
# Декоратор для кэширования методов
|
||||
def cache_method(cache_key: str):
|
||||
def decorator(f):
|
||||
@wraps(f)
|
||||
def decorated_function(*args, **kwargs):
|
||||
# Генерация ключа для кэширования
|
||||
key = cache_key.format(*args, **kwargs)
|
||||
# Получение значения из кэша
|
||||
result = cache_region.get(key)
|
||||
if result is None:
|
||||
# Если значение отсутствует в кэше, вызываем функцию и кэшируем результат
|
||||
result = f(*args, **kwargs)
|
||||
cache_region.set(key, result)
|
||||
return result
|
||||
|
||||
return decorated_function
|
||||
|
||||
return decorator
|
||||
# Создание региона кэша с TTL
|
||||
authors_cache_region = make_region()
|
||||
authors_cache_region.configure(
|
||||
'dogpile.cache.redis',
|
||||
arguments={'url': f'{REDIS_URL}/1'},
|
||||
expiration_time=3600, # Cache expiration time in seconds
|
||||
)
|
||||
|
Reference in New Issue
Block a user