Added support for default_ttl_seconds in create_cache_client()
This commit is contained in:
4
src/libbot/cache/classes/cache_memcached.py
vendored
4
src/libbot/cache/classes/cache_memcached.py
vendored
@@ -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}"
|
||||
|
4
src/libbot/cache/classes/cache_redis.py
vendored
4
src/libbot/cache/classes/cache_redis.py
vendored
@@ -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}"
|
||||
|
5
src/libbot/cache/manager/manager.py
vendored
5
src/libbot/cache/manager/manager.py
vendored
@@ -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.")
|
||||
|
Reference in New Issue
Block a user