Commit eb79f157 authored by Marc-André Santune's avatar Marc-André Santune
Browse files

cache registry information for 30 seconds

parent a50c94cd
"""Store settings""" """Store settings"""
import logging import logging
from MaxIcsRegistry import MaxIcsRegistry from MaxIcsRegistry import MaxIcsRegistry
from cachetools import cached, LRUCache, TTLCache
class Settings: class Settings:
"""Settings for BKC communication""" """Settings for BKC communication"""
def __init__(self, staging: bool = False, registry=None, **kwargs) -> None: def __init__(self, staging: bool = False, registry=None, **kwargs) -> None:
self.logger = logging.getLogger(self.__class__.__name__) self.logger = logging.getLogger(self.__class__.__name__)
if not registry: if not registry:
self.logger.warning("Registry is not set when initializing Building. Calling registry...") self.logger.warning(
"Registry is not set when initializing Building. Calling registry..."
)
registry = MaxIcsRegistry.from_env(staging=staging) registry = MaxIcsRegistry.from_env(staging=staging)
building_center_info = registry.get_info("building-knowledge-information-center") building_center_info = self._get_node_information(
registry=registry, node_name="building-knowledge-information-center"
)
self.api_key = next(iter(building_center_info["api_in"].values()))["key"] self.api_key = next(iter(building_center_info["api_in"].values()))["key"]
...@@ -26,3 +33,8 @@ class Settings: ...@@ -26,3 +33,8 @@ class Settings:
def __str__(self): def __str__(self):
return "Settings __dict__: %s" % str(self.__dict__) return "Settings __dict__: %s" % str(self.__dict__)
@cached(cache=TTLCache(maxsize=1024, ttl=30))
def _get_node_information(self, registry: MaxIcsRegistry, node_name: str):
node_info = registry.get_info(node_name)
return node_info
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment