diff options
| author | Joshua Harlow <harlowja@yahoo-inc.com> | 2013-05-17 12:07:44 -0700 |
|---|---|---|
| committer | Joshua Harlow <harlowja@yahoo-inc.com> | 2013-05-17 12:07:44 -0700 |
| commit | c4c03f8ca33307c43e307fb1ecc2ac1ca1c3de6d (patch) | |
| tree | bf43f6d9ef8c37b8c1ca698ef0457676380ae69d /taskflow/patterns | |
| parent | 3bc9183ee915ccf22e51350c6b839a6492555466 (diff) | |
| download | taskflow-c4c03f8ca33307c43e307fb1ecc2ac1ca1c3de6d.tar.gz | |
Allow resuming stage to be interrupted.
Diffstat (limited to 'taskflow/patterns')
| -rw-r--r-- | taskflow/patterns/ordered_workflow.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/taskflow/patterns/ordered_workflow.py b/taskflow/patterns/ordered_workflow.py index 1815e70..fe09889 100644 --- a/taskflow/patterns/ordered_workflow.py +++ b/taskflow/patterns/ordered_workflow.py @@ -130,9 +130,13 @@ class Workflow(object): self._change_state(context, states.STARTED) task_order = self.order() last_task = 0 + was_interrupted = False if result_fetcher: self._change_state(context, states.RESUMING) for (i, task) in enumerate(task_order): + if self.state == states.INTERRUPTED: + was_interrupted = True + break (has_result, result) = result_fetcher(self, task) if not has_result: break @@ -152,8 +156,10 @@ class Workflow(object): except Exception as e: self._perform_reconcilation(context, task, e) + if was_interrupted: + return + self._change_state(context, states.RUNNING) - was_interrupted = False for task in task_order[last_task:]: if self.state == states.INTERRUPTED: was_interrupted = True |
