from abc import ABC, abstractmethod from typing import Optional from docling_serve.datamodel.requests import ConvertDocumentsRequest from docling_serve.datamodel.task import Task class OrchestratorError(Exception): pass class TaskNotFoundError(OrchestratorError): pass class BaseOrchestrator(ABC): @abstractmethod async def enqueue(self, request: ConvertDocumentsRequest) -> Task: pass @abstractmethod async def queue_size(self) -> int: pass @abstractmethod async def get_queue_position(self, task_id: str) -> Optional[int]: pass @abstractmethod async def task_status(self, task_id: str, wait: float = 0.0) -> Task: pass @abstractmethod async def task_result(self, task_id: str): pass @abstractmethod async def process_queue(self): pass