summaryrefslogtreecommitdiff
path: root/taskflow/engines/action_engine/executor.py
diff options
context:
space:
mode:
Diffstat (limited to 'taskflow/engines/action_engine/executor.py')
-rw-r--r--taskflow/engines/action_engine/executor.py30
1 files changed, 8 insertions, 22 deletions
diff --git a/taskflow/engines/action_engine/executor.py b/taskflow/engines/action_engine/executor.py
index 47a195d..66897a6 100644
--- a/taskflow/engines/action_engine/executor.py
+++ b/taskflow/engines/action_engine/executor.py
@@ -17,7 +17,6 @@
# under the License.
import abc
-import contextlib
from concurrent import futures
import six
@@ -31,21 +30,8 @@ EXECUTED = 'executed'
REVERTED = 'reverted'
-@contextlib.contextmanager
-def _autobind(task, bind_name, bind_func, **kwargs):
- task.bind(bind_name, bind_func, **kwargs)
- try:
- yield task
- finally:
- task.unbind(bind_name, bind_func)
-
-
-def _noop(*args, **kwargs):
- pass
-
-
def _execute_task(task, arguments, progress_callback):
- with _autobind(task, 'update_progress', progress_callback):
+ with task.autobind('update_progress', progress_callback):
try:
result = task.execute(**arguments)
except Exception:
@@ -59,7 +45,7 @@ def _revert_task(task, arguments, result, failures, progress_callback):
kwargs = arguments.copy()
kwargs['result'] = result
kwargs['flow_failures'] = failures
- with _autobind(task, 'update_progress', progress_callback):
+ with task.autobind('update_progress', progress_callback):
try:
result = task.revert(**kwargs)
except Exception:
@@ -79,12 +65,12 @@ class TaskExecutorBase(object):
"""
@abc.abstractmethod
- def execute_task(self, task, arguments, progress_callback=_noop):
+ def execute_task(self, task, arguments, progress_callback=None):
"""Schedules task execution."""
@abc.abstractmethod
def revert_task(self, task, arguments, result, failures,
- progress_callback=_noop):
+ progress_callback=None):
"""Schedules task reversion"""
@abc.abstractmethod
@@ -103,12 +89,12 @@ class TaskExecutorBase(object):
class SerialTaskExecutor(TaskExecutorBase):
"""Execute task one after another."""
- def execute_task(self, task, arguments, progress_callback=_noop):
+ def execute_task(self, task, arguments, progress_callback=None):
return async_utils.make_completed_future(
_execute_task(task, arguments, progress_callback))
def revert_task(self, task, arguments, result, failures,
- progress_callback=_noop):
+ progress_callback=None):
return async_utils.make_completed_future(
_revert_task(task, arguments, result,
failures, progress_callback))
@@ -129,12 +115,12 @@ class ParallelTaskExecutor(TaskExecutorBase):
self._executor = executor
self._own_executor = executor is None
- def execute_task(self, task, arguments, progress_callback=_noop):
+ def execute_task(self, task, arguments, progress_callback=None):
return self._executor.submit(
_execute_task, task, arguments, progress_callback)
def revert_task(self, task, arguments, result, failures,
- progress_callback=_noop):
+ progress_callback=None):
return self._executor.submit(
_revert_task, task,
arguments, result, failures, progress_callback)