From 837f94c1cf4021594f71ec8a4255a667fcfc4e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Srokosz?= Date: Fri, 23 Feb 2024 18:15:08 +0100 Subject: [PATCH 1/2] Fix: Try to load Karton lazily if can't be loaded eagerly --- mwdb/core/karton.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/mwdb/core/karton.py b/mwdb/core/karton.py index 121865b93..0b7015188 100644 --- a/mwdb/core/karton.py +++ b/mwdb/core/karton.py @@ -25,20 +25,28 @@ class KartonProducer(Producer): with_service_info = True -if app_config.mwdb.enable_karton: - try: - karton_producer = KartonProducer( - config=KartonConfig(app_config.karton.config_path) - ) - except Exception: - logger.exception("Failed to load Karton producer") - karton_producer = None -else: - karton_producer = None +_karton_producer = None def get_karton_producer() -> Optional[Producer]: - return karton_producer + global _karton_producer + if not app_config.mwdb.enable_karton: + return None + if _karton_producer is None: + try: + _karton_producer = KartonProducer( + config=KartonConfig(app_config.karton.config_path) + ) + except Exception: + logger.exception("Failed to load Karton producer") + _karton_producer = None + return _karton_producer + return None + + +# Try to load as soon as possible, but don't give up +# if Karton is temporarily not available +get_karton_producer() def prepare_headers(obj: "Object", arguments: Dict[str, Any]) -> Dict[str, Any]: From bfc02486dd83c503bb51f256a1fbe9abba27956e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Srokosz?= Date: Fri, 23 Feb 2024 18:33:15 +0100 Subject: [PATCH 2/2] Fix --- mwdb/core/karton.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mwdb/core/karton.py b/mwdb/core/karton.py index 0b7015188..dd0004ac4 100644 --- a/mwdb/core/karton.py +++ b/mwdb/core/karton.py @@ -40,8 +40,7 @@ def get_karton_producer() -> Optional[Producer]: except Exception: logger.exception("Failed to load Karton producer") _karton_producer = None - return _karton_producer - return None + return _karton_producer # Try to load as soon as possible, but don't give up