diff --git a/tracardi/config.py b/tracardi/config.py index f4d9c1ac..c74022b3 100644 --- a/tracardi/config.py +++ b/tracardi/config.py @@ -29,6 +29,8 @@ class MemoryCacheConfig: def __init__(self): _default_ttl = 60 + self.timeout_sql_query_in = 1 + self.max_one_cache_fill_every = .5 self.event_to_profile_coping_ttl = _get_random_value( get_env_as_int('EVENT_TO_PROFILE_COPY_CACHE_TTL', _default_ttl)) self.source_ttl = _get_random_value(get_env_as_int('SOURCE_CACHE_TTL', _default_ttl)) diff --git a/tracardi/service/cache/compliance.py b/tracardi/service/cache/compliance.py index 22155000..f0a9d433 100644 --- a/tracardi/service/cache/compliance.py +++ b/tracardi/service/cache/compliance.py @@ -9,8 +9,8 @@ @AsyncCache(memory_cache.data_compliance_cache_ttl, allow_null_values=True, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_data_compliance(event_type_id: str) -> List[EventDataCompliance]: diff --git a/tracardi/service/cache/destinations.py b/tracardi/service/cache/destinations.py index ecc84e70..ccc579aa 100644 --- a/tracardi/service/cache/destinations.py +++ b/tracardi/service/cache/destinations.py @@ -8,8 +8,8 @@ @AsyncCache(memory_cache.event_destination_cache_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_event_destinations(event_type, source_id) -> List[Destination]: diff --git a/tracardi/service/cache/event_mapping.py b/tracardi/service/cache/event_mapping.py index 01e0e38c..da98e071 100644 --- a/tracardi/service/cache/event_mapping.py +++ b/tracardi/service/cache/event_mapping.py @@ -7,8 +7,8 @@ @AsyncCache(memory_cache.event_mapping_cache_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, allow_null_values=True, return_cache_on_error=True ) diff --git a/tracardi/service/cache/event_reshaping.py b/tracardi/service/cache/event_reshaping.py index abee6921..63edebc3 100644 --- a/tracardi/service/cache/event_reshaping.py +++ b/tracardi/service/cache/event_reshaping.py @@ -7,8 +7,8 @@ @AsyncCache(memory_cache.event_reshaping_cache_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, allow_null_values=True, return_cache_on_error=True ) diff --git a/tracardi/service/cache/event_source.py b/tracardi/service/cache/event_source.py index 22be98ef..5b48ff58 100644 --- a/tracardi/service/cache/event_source.py +++ b/tracardi/service/cache/event_source.py @@ -7,8 +7,8 @@ @AsyncCache(memory_cache.source_ttl, - timeout=1, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_event_source_via_cache(source_id) -> Optional[EventSource]: diff --git a/tracardi/service/cache/event_to_profile_mapping.py b/tracardi/service/cache/event_to_profile_mapping.py index eaf457e2..5c728c31 100644 --- a/tracardi/service/cache/event_to_profile_mapping.py +++ b/tracardi/service/cache/event_to_profile_mapping.py @@ -7,8 +7,8 @@ @AsyncCache(memory_cache.event_to_profile_coping_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_event_to_profile(event_type_id: str) -> List[EventToProfile]: diff --git a/tracardi/service/cache/event_validation.py b/tracardi/service/cache/event_validation.py index 1bf4157b..bbb35fc4 100644 --- a/tracardi/service/cache/event_validation.py +++ b/tracardi/service/cache/event_validation.py @@ -6,8 +6,8 @@ from tracardi.service.storage.mysql.interface import event_validation_dao @AsyncCache(memory_cache.event_validation_cache_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_event_validation(event_type: str) -> List[EventValidator]: diff --git a/tracardi/service/cache/field_mapping.py b/tracardi/service/cache/field_mapping.py index 79e332f1..74a459ab 100644 --- a/tracardi/service/cache/field_mapping.py +++ b/tracardi/service/cache/field_mapping.py @@ -1,10 +1,11 @@ +from tracardi.config import memory_cache from tracardi.service.decorators.async_cache import AsyncCache from tracardi.service.storage.elastic.driver.factory import storage_manager @AsyncCache(5, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_fields(index: str) -> list: diff --git a/tracardi/service/cache/load_settings.py b/tracardi/service/cache/load_settings.py index 9f8ca13d..b7d9a4f3 100644 --- a/tracardi/service/cache/load_settings.py +++ b/tracardi/service/cache/load_settings.py @@ -1,10 +1,11 @@ +from tracardi.config import memory_cache from tracardi.service.decorators.async_cache import AsyncCache from tracardi.service.storage.mysql.service.configuration_service import ConfigurationService @AsyncCache(60, - timeout=1, - max_one_cache_fill_every=.1, + timeout=5, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True) async def load_global_settings_by_key(key): cs = ConfigurationService() diff --git a/tracardi/service/cache/resource.py b/tracardi/service/cache/resource.py index 5c617b3a..4fecf5ea 100644 --- a/tracardi/service/cache/resource.py +++ b/tracardi/service/cache/resource.py @@ -5,8 +5,8 @@ @AsyncCache(memory_cache.resource_load_cache_ttl, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_resource_via_cache(resource_id: str) -> Resource: diff --git a/tracardi/service/cache/trigger.py b/tracardi/service/cache/trigger.py index 9a1f0822..35f2dea1 100644 --- a/tracardi/service/cache/trigger.py +++ b/tracardi/service/cache/trigger.py @@ -12,8 +12,8 @@ def _cache_param_function(wts, event_type: str, source_id: str) -> tuple: @AsyncCache(memory_cache.trigger_rule_cache_ttl, key_func=_cache_param_function, - timeout=.5, - max_one_cache_fill_every=.1, + timeout=memory_cache.timeout_sql_query_in, + max_one_cache_fill_every=memory_cache.max_one_cache_fill_every, return_cache_on_error=True ) async def load_trigger_rule(wts, event_type: str, source_id: str) -> List[Rule]: diff --git a/tracardi/service/decorators/async_cache.py b/tracardi/service/decorators/async_cache.py index 1826f806..5a0d700e 100644 --- a/tracardi/service/decorators/async_cache.py +++ b/tracardi/service/decorators/async_cache.py @@ -72,6 +72,7 @@ async def _run_function(self, key, func: Callable, args, kwargs, timeout: float f"TIMEOUT for cache {func.__qualname__} in {time.time() - t:.4f}") # If no data raise error if not self._is_result_cached(key): + logger.warning(f"Result not cached for {key}") raise e # Else return from cache result = self.cache[key]["result"]