mirror of
https://github.com/docling-project/docling-serve.git
synced 2025-11-29 08:33:50 +00:00
70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
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.")
|