Files
romm/backend/handler/redis_handler.py
HellLord 98f60fb001 adds more configuration for external redis
add env vars: REDIS_USERNAME, REDIS_DB

Co-Authored-By: Zurdi <34356590+zurdi15@users.noreply.github.com>
Co-Authored-By: Georges-Antoine Assi <3247106+gantoine@users.noreply.github.com>
2024-04-14 22:01:31 +06:00

38 lines
1.2 KiB
Python

import sys
from enum import Enum
from config import REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_USERNAME, REDIS_DB
from logger.logger import log
from redis import Redis
from fakeredis import FakeStrictRedis
from rq import Queue
class QueuePrio(Enum):
HIGH = "high"
DEFAULT = "default"
LOW = "low"
redis_client = Redis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD, username=REDIS_USERNAME, db=REDIS_DB)
redis_url = f"redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}" if REDIS_PASSWORD else f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}"
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 = FakeStrictRedis(version=7)
else:
log.info(f"Connecting to redis in {sys.argv[0]}...")
# A seperate client that auto-decodes responses is needed
cache = Redis(
host=REDIS_HOST,
port=REDIS_PORT,
password=REDIS_PASSWORD,
username=REDIS_USERNAME,
db=REDIS_DB,
decode_responses=True,
)
log.info(f"Redis connection established in {sys.argv[0]}!")