Files
romm/backend/handler/redis_handler.py
Georges-Antoine Assi a36d49979e [WIP] build redis into container
expose port right
2024-03-01 10:36:02 -05:00

60 lines
1.5 KiB
Python

import sys
from enum import Enum
from config import REDIS_HOST, REDIS_PORT
from logger.logger import log
from redis import Redis
from rq import Queue
class QueuePrio(Enum):
HIGH = "high"
DEFAULT = "default"
LOW = "low"
class FallbackCache:
def __init__(self) -> None:
self.fallback: dict = {}
def get(self, key: str, *args, **kwargs) -> str:
return self.fallback.get(key, "")
def set(self, key: str, value: str, *args, **kwargs) -> None:
self.fallback[key] = value
def delete(self, key: str, *args, **kwargs) -> None:
self.fallback.pop(key, None)
def exists(self, key: str, *args, **kwargs) -> bool:
return key in self.fallback
def flushall(self) -> None:
self.fallback = {}
def __repr__(self) -> str:
return f"<FallbackCache {self.fallback}>"
def __str__(self) -> str:
return repr(self)
redis_client = Redis(host=REDIS_HOST, port=REDIS_PORT, db=0)
redis_url = f"redis://{REDIS_HOST}:{REDIS_PORT}"
high_prio_queue = Queue(name=QueuePrio.HIGH.value, connection=redis_client)
default_queue = Queue(name=QueuePrio.DEFAULT.value, connection=redis_client)
low_prio_queue = Queue(name=QueuePrio.LOW.value, connection=redis_client)
if "pytest" in sys.modules:
cache = FallbackCache()
else:
log.info("Connecting to redis...")
# A seperate client that auto-decodes responses is needed
cache = Redis(
host=REDIS_HOST,
port=REDIS_PORT,
db=0,
decode_responses=True,
)