from functools import lru_cache from docling_jobkit.orchestrators.base_orchestrator import BaseOrchestrator from docling_serve.settings import AsyncEngine, docling_serve_settings from docling_serve.storage import get_scratch @lru_cache def get_async_orchestrator() -> BaseOrchestrator: if docling_serve_settings.eng_kind == AsyncEngine.LOCAL: from docling_jobkit.convert.manager import ( DoclingConverterManager, DoclingConverterManagerConfig, ) from docling_jobkit.orchestrators.local.orchestrator import ( LocalOrchestrator, LocalOrchestratorConfig, ) local_config = LocalOrchestratorConfig( num_workers=docling_serve_settings.eng_loc_num_workers, shared_models=docling_serve_settings.eng_loc_share_models, scratch_dir=get_scratch(), ) cm_config = DoclingConverterManagerConfig( artifacts_path=docling_serve_settings.artifacts_path, options_cache_size=docling_serve_settings.options_cache_size, enable_remote_services=docling_serve_settings.enable_remote_services, allow_external_plugins=docling_serve_settings.allow_external_plugins, max_num_pages=docling_serve_settings.max_num_pages, max_file_size=docling_serve_settings.max_file_size, ) cm = DoclingConverterManager(config=cm_config) return LocalOrchestrator(config=local_config, converter_manager=cm) elif docling_serve_settings.eng_kind == AsyncEngine.RQ: from docling_jobkit.orchestrators.rq.orchestrator import ( RQOrchestrator, RQOrchestratorConfig, ) rq_config = RQOrchestratorConfig( redis_url=docling_serve_settings.eng_rq_redis_url, results_prefix=docling_serve_settings.eng_rq_results_prefix, sub_channel=docling_serve_settings.eng_rq_sub_channel, scratch_dir=get_scratch(), ) return RQOrchestrator(config=rq_config) elif docling_serve_settings.eng_kind == AsyncEngine.KFP: from docling_jobkit.orchestrators.kfp.orchestrator import ( KfpOrchestrator, KfpOrchestratorConfig, ) kfp_config = KfpOrchestratorConfig( endpoint=docling_serve_settings.eng_kfp_endpoint, token=docling_serve_settings.eng_kfp_token, ca_cert_path=docling_serve_settings.eng_kfp_ca_cert_path, self_callback_endpoint=docling_serve_settings.eng_kfp_self_callback_endpoint, self_callback_token_path=docling_serve_settings.eng_kfp_self_callback_token_path, self_callback_ca_cert_path=docling_serve_settings.eng_kfp_self_callback_ca_cert_path, ) return KfpOrchestrator(config=kfp_config) raise RuntimeError(f"Engine {docling_serve_settings.eng_kind} not recognized.")