diff --git a/mwdb/core/karton.py b/mwdb/core/karton.py index 121865b93..dd0004ac4 100644 --- a/mwdb/core/karton.py +++ b/mwdb/core/karton.py @@ -25,20 +25,27 @@ 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 + + +# 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]: