openflexure-microscope-server/openflexure_microscope/task.py

60 lines
2.2 KiB
Python

import logging
from openflexure_microscope.common.tasks import tasks, states, taskify, cleanup_tasks, remove_task
class TaskOrchestrator:
"""
DEPRECATED: Class responsible for spawning threaded tasks, and storing their returns.
A microscope should contain exactly one instance of `TaskOrchestrator`.
Attributes:
tasks (list): List of `Task` objects
"""
@property
def tasks(self):
logging.warning("TaskOrchestrator class is deprecated. Please use common.tasks.tasks().values() instead.")
return tasks().values()
@property
def state(self):
"""
Returns a list of dictionary representations of all tasks in the session.
"""
logging.warning("TaskOrchestrator class is deprecated. Please use common.tasks.tasks() instead.")
return states()
def task_from_id(self, task_id: str):
"""
Returns a particular task object with the specified `task_id`.
"""
return tasks()[task_id]
def start(self, function, *args, **kwargs):
"""
Attach and start a new long-running task, if allowed by `start_condition()`.
Returns an instance of :py:class:`openflexure_microscope.task.Task`, which can be used to check the state
or eventual return of the task.
Args:
function (function): The target function to run in the background
args, kwargs: Arguments that will be passed to `function` at runtime.
"""
logging.warning("TaskOrchestrator class is deprecated. Please use common.tasks.taskify() instead.")
return taskify(function)(*args, **kwargs)
def clean(self):
"""
Remove all inactive tasks from the task array.
This will remove tasks that either finished or never started.
"""
logging.warning("TaskOrchestrator class is deprecated. Please use common.tasks.cleanup_tasks() instead.")
cleanup_tasks()
def delete(self, task_id: str):
"""
Delete a given task by ID, only if task is not currently running.
"""
logging.warning("TaskOrchestrator class is deprecated. Please use common.tasks.remove_task() instead.")
remove_task(task_id)