cc-os/plugins/os-adr/eval-c/fixture/project/taskq/execution.py

26 lines
905 B
Python

"""Job execution engine."""
import asyncio
from typing import Callable
class ExecutionEngine:
"""Executes jobs with configurable handlers."""
def __init__(self, queue):
self.queue = queue
self.handlers = {}
# Currently: no timeout, no retry logic
def register_handler(self, name: str, handler: Callable) -> None:
"""Register a job handler function."""
self.handlers[name] = handler
async def run_job(self, job) -> dict:
"""Execute a single job (no timeout/retry currently)."""
handler = self.handlers.get(job.handler)
if not handler:
return {"status": "failed", "reason": "handler_not_found"}
try:
result = await handler(job.payload)
return {"status": "success", "result": result}
except Exception as e:
return {"status": "failed", "reason": str(e)}