production-evyos-systems-an.../ServicesTask/app/core/config.py

51 lines
1.7 KiB
Python

import os
import redis
from typing import Optional
class Env:
REDIS_HOST: str = os.getenv("REDIS_HOST", "redis")
REDIS_PORT: int = int(os.getenv("REDIS_PORT", "6379"))
REDIS_DB: int = int(os.getenv("REDIS_DB", "0"))
REDIS_USERNAME: Optional[str] = os.getenv("REDIS_USERNAME")
REDIS_PASSWORD: Optional[str] = os.getenv("REDIS_PASSWORD")
REDIS_STREAM_PUBLISH: str = os.getenv("REDIS_STREAM_PUBLISH", "DEFAULT:REGISTER:DONTUSE")
REDIS_STREAM_TASKS: str = os.getenv("REDIS_STREAM_TASKS", "DEFAULT:REGISTER:DONTUSE")
BATCH_SIZE: int = int(os.getenv("BATCH_SIZE", "5"))
MAX_RETRIES: int = int(os.getenv("MAX_RETRIES", "3"))
IDLE_RECLAIM_MS: int = int(os.getenv("IDLE_RECLAIM_MS", "30000"))
SQLITE_PATH: str = os.getenv("SQLITE_PATH", "/app/data/queue.db")
class RedisConfig:
def __init__(
self,
host: str = Env.REDIS_HOST,
port: int = Env.REDIS_PORT,
db: int = Env.REDIS_DB,
username: Optional[str] = Env.REDIS_USERNAME,
password: Optional[str] = Env.REDIS_PASSWORD,
batch_size: int = Env.BATCH_SIZE,
max_retries: int = Env.MAX_RETRIES,
idle_reclaim_ms: int = Env.IDLE_RECLAIM_MS,
):
self.host = host
self.port = port
self.db = db
self.username = username
self.password = password
self.batch_size = batch_size
self.max_retries = max_retries
self.idle_reclaim_ms = idle_reclaim_ms
def client(self) -> redis.Redis:
return redis.Redis(
host=self.host,
port=self.port,
db=self.db,
username=self.username,
password=self.password,
)