From 727d531d635228d43475329982e5bfdbb2edd445 Mon Sep 17 00:00:00 2001 From: Profitroll Date: Wed, 9 Jul 2025 14:31:55 +0200 Subject: [PATCH] Added support for default_ttl_seconds in create_cache_client() --- src/libbot/cache/classes/cache_memcached.py | 4 ++-- src/libbot/cache/classes/cache_redis.py | 4 ++-- src/libbot/cache/manager/manager.py | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/libbot/cache/classes/cache_memcached.py b/src/libbot/cache/classes/cache_memcached.py index 4c74453..33b80ec 100644 --- a/src/libbot/cache/classes/cache_memcached.py +++ b/src/libbot/cache/classes/cache_memcached.py @@ -23,13 +23,13 @@ class CacheMemcached(Cache): logger.info("Initialized Memcached for caching") @classmethod - def from_config(cls, engine_config: Dict[str, Any], prefix: Optional[str] = None) -> "CacheMemcached": + def from_config(cls, engine_config: Dict[str, Any], prefix: Optional[str] = None, default_ttl_seconds: Optional[int] = None) -> "CacheMemcached": if "uri" not in engine_config: raise KeyError( "Cache configuration is invalid. Please check if all keys are set (engine: memcached)" ) - return cls(Client(engine_config["uri"], default_noreply=True), prefix=prefix) + return cls(Client(engine_config["uri"], default_noreply=True, default_ttl_seconds=default_ttl_seconds), prefix=prefix) def _get_prefixed_key(self, key: str) -> str: return key if self.prefix is None else f"{self.prefix}_{key}" diff --git a/src/libbot/cache/classes/cache_redis.py b/src/libbot/cache/classes/cache_redis.py index c5d0ad9..eecc7c0 100644 --- a/src/libbot/cache/classes/cache_redis.py +++ b/src/libbot/cache/classes/cache_redis.py @@ -23,13 +23,13 @@ class CacheRedis(Cache): logger.info("Initialized Redis for caching") @classmethod - def from_config(cls, engine_config: Dict[str, Any], prefix: Optional[str] = None) -> Any: + def from_config(cls, engine_config: Dict[str, Any], prefix: Optional[str] = None, default_ttl_seconds: Optional[int] = None) -> Any: if "uri" not in engine_config: raise KeyError( "Cache configuration is invalid. Please check if all keys are set (engine: memcached)" ) - return cls(Redis.from_url(engine_config["uri"]), prefix=prefix) + return cls(Redis.from_url(engine_config["uri"]), prefix=prefix, default_ttl_seconds=default_ttl_seconds) def _get_prefixed_key(self, key: str) -> str: return key if self.prefix is None else f"{self.prefix}_{key}" diff --git a/src/libbot/cache/manager/manager.py b/src/libbot/cache/manager/manager.py index 67d3f6b..6a96b60 100644 --- a/src/libbot/cache/manager/manager.py +++ b/src/libbot/cache/manager/manager.py @@ -7,6 +7,7 @@ def create_cache_client( config: Dict[str, Any], engine: Literal["memcached", "redis"] | None = None, prefix: Optional[str] = None, + default_ttl_seconds: Optional[int] = None, ) -> CacheMemcached | CacheRedis: if engine not in ["memcached", "redis"] or engine is None: raise KeyError(f"Incorrect cache engine provided. Expected 'memcached' or 'redis', got '{engine}'") @@ -18,8 +19,8 @@ def create_cache_client( match engine: case "memcached": - return CacheMemcached.from_config(config["cache"][engine], prefix=prefix) + return CacheMemcached.from_config(config["cache"][engine], prefix=prefix, default_ttl_seconds=default_ttl_seconds) case "redis": - return CacheRedis.from_config(config["cache"][engine], prefix=prefix) + return CacheRedis.from_config(config["cache"][engine], prefix=prefix, default_ttl_seconds=default_ttl_seconds) case _: raise KeyError(f"Cache implementation for the engine '{engine}' is not present.")