From a1d9b0451379e2a116f0553e219ead4587fa788d Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 10 Oct 2020 16:12:29 +0200 Subject: [PATCH] BaseUtils: v1.6.1; fetch interval adjustable per cache entry --- .../TheCodeLabs_BaseUtils/MultiCacheKeyService.py | 13 +++++++------ TheCodeLabs_BaseUtils/setup.py | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py index 0228b8d..50b1c64 100644 --- a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py +++ b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py @@ -8,19 +8,20 @@ from typing import Dict @dataclass class CacheEntry: key: str - lastFetchTimestamp: float + fetchIntervalInSeconds: int settings: Dict + lastFetchTimestamp: float cachedData: Dict class MultiCacheKeyService(ABC): - def __init__(self, fetchThresholdInSeconds: int): - self._fetchThresholdInSeconds = fetchThresholdInSeconds + def __init__(self): self._cache = {} - def get_data(self, cacheKey: str, settings: Dict) -> Dict: + def get_data(self, cacheKey: str, fetchIntervalInSeconds: int, settings: Dict) -> Dict: if cacheKey not in self._cache: - self._cache[cacheKey] = CacheEntry(cacheKey, datetime.now().timestamp(), settings, {}) + self._cache[cacheKey] = CacheEntry(cacheKey, fetchIntervalInSeconds, settings, + datetime.now().timestamp(), {}) cacheEntry = self._cache[cacheKey] if self.__is_data_obsolete(cacheEntry): @@ -29,7 +30,7 @@ class MultiCacheKeyService(ABC): def __is_data_obsolete(self, cacheEntry: CacheEntry) -> bool: now = datetime.now().timestamp() - if (now - cacheEntry.lastFetchTimestamp) > self._fetchThresholdInSeconds: + if (now - cacheEntry.lastFetchTimestamp) > cacheEntry.fetchIntervalInSeconds: cacheEntry.lastFetchTimestamp = now return True diff --git a/TheCodeLabs_BaseUtils/setup.py b/TheCodeLabs_BaseUtils/setup.py index 9ebaa6c..2dec9dd 100644 --- a/TheCodeLabs_BaseUtils/setup.py +++ b/TheCodeLabs_BaseUtils/setup.py @@ -3,7 +3,7 @@ from setuptools import setup setup( name='TheCodeLabs-BaseUtils', packages=['TheCodeLabs_BaseUtils'], - version='1.6.0', + version='1.6.1', license='MIT', description='Useful python classes', author='TheCodeLabs', -- GitLab