Feat: move action to worker with a dispatcher

This commit is contained in:
2022-04-10 14:37:19 +02:00
parent 3f1464f3f6
commit 08411bd42d
5 changed files with 36 additions and 9 deletions

View File

@@ -4,6 +4,6 @@ from bopytex.tasks import Task
def simple(options: dict) -> list[Task]:
"""Simple planner with options['quantity'] tasks and no dependencies"""
return [
Task("Do", args={"number": i}, deps=[], output=f"{i}")
Task("DO", args={"number": i}, deps=[], output=f"{i}")
for i in range(options["quantity"])
]

View File

@@ -5,14 +5,13 @@
Producing then compiling templates
"""
from bopytex.actions import ACTIONS
from bopytex.scheduler import Scheduler
def orcherstrator(
options: dict,
planner,
actions: dict = ACTIONS,
dispatcher,
):
tasks = planner(options)
@@ -20,7 +19,7 @@ def orcherstrator(
scheduler.append(tasks)
for task in scheduler.backlog():
yield task
yield from dispatcher(task)
# -----------------------------

View File

@@ -0,0 +1,23 @@
class ActionNotFound(Exception):
pass
class Dispatcher:
def __init__(self, actions: list):
self._actions = actions
def __call__(self, task):
try:
choosen_action = self._actions[task.action]
except KeyError:
raise ActionNotFound(f"The action {task.action} is not in {self._actions.keys()}")
return choosen_action(
args=task.args,
deps=task.deps,
output=task.output
)
def fake_worker(args, deps, output):
yield f"FAKE - {args} - {deps} - {output}"

View File

@@ -1,3 +1,4 @@
""" A worker consumes tasks """
def generate():
pass
@@ -18,10 +19,10 @@ def clean():
pass
ACTIONS = {
WORKERS = {
"GENERATE": generate,
"COMPILE": compile,
"ACTIVATE_CORR": activate_corr,
"JOIN_PDF": join_pdf,
"clean": clean,
"CLEAN": clean,
}