This repository has been archived on 2023-10-01. You can view files and clone it, but cannot push or open issues or pull requests.
PyNyaaTa/pynyaata/cache/__init__.py
2023-01-13 23:11:55 +01:00

40 lines
828 B
Python

from functools import wraps
from logging import error
from os import getenv
from typing import Optional
from pynyaata.cache.simple import SimpleCache
from pynyaata.types import Bridge, Cache
from redis import RedisError
REDIS_URL: Optional[str] = getenv("REDIS_URL")
client: Cache = SimpleCache()
if REDIS_URL:
try:
from pynyaata.cache.redis import RedisCache
client = RedisCache()
except RedisError as e:
error(e)
def cache_data(f):
@wraps(f)
def wrapper(bridge: Bridge, query: str = "", page: int = 1):
key = f"pynyaata.{bridge.__class__.__name__}.{f.__name__}.{query}.{page}"
cached = client.get(key)
if cached:
return cached
reals = f(bridge, query, page)
client.set(key, reals)
return reals
return wrapper