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")
|
logger.info("Initialized Memcached for caching")
|
||||||
|
|
||||||
@classmethod
|
@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:
|
if "uri" not in engine_config:
|
||||||
raise KeyError(
|
raise KeyError(
|
||||||
"Cache configuration is invalid. Please check if all keys are set (engine: memcached)"
|
"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:
|
def _get_prefixed_key(self, key: str) -> str:
|
||||||
return key if self.prefix is None else f"{self.prefix}_{key}"
|
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")
|
logger.info("Initialized Redis for caching")
|
||||||
|
|
||||||
@classmethod
|
@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:
|
if "uri" not in engine_config:
|
||||||
raise KeyError(
|
raise KeyError(
|
||||||
"Cache configuration is invalid. Please check if all keys are set (engine: memcached)"
|
"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:
|
def _get_prefixed_key(self, key: str) -> str:
|
||||||
return key if self.prefix is None else f"{self.prefix}_{key}"
|
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],
|
config: Dict[str, Any],
|
||||||
engine: Literal["memcached", "redis"] | None = None,
|
engine: Literal["memcached", "redis"] | None = None,
|
||||||
prefix: Optional[str] = None,
|
prefix: Optional[str] = None,
|
||||||
|
default_ttl_seconds: Optional[int] = None,
|
||||||
) -> CacheMemcached | CacheRedis:
|
) -> CacheMemcached | CacheRedis:
|
||||||
if engine not in ["memcached", "redis"] or engine is None:
|
if engine not in ["memcached", "redis"] or engine is None:
|
||||||
raise KeyError(f"Incorrect cache engine provided. Expected 'memcached' or 'redis', got '{engine}'")
|
raise KeyError(f"Incorrect cache engine provided. Expected 'memcached' or 'redis', got '{engine}'")
|
||||||
@@ -18,8 +19,8 @@ def create_cache_client(
|
|||||||
|
|
||||||
match engine:
|
match engine:
|
||||||
case "memcached":
|
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":
|
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 _:
|
case _:
|
||||||
raise KeyError(f"Cache implementation for the engine '{engine}' is not present.")
|
raise KeyError(f"Cache implementation for the engine '{engine}' is not present.")
|
||||||
|
Reference in New Issue
Block a user