summaryrefslogtreecommitdiff
path: root/taskflow/patterns
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2013-05-17 12:07:44 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2013-05-17 12:07:44 -0700
commitc4c03f8ca33307c43e307fb1ecc2ac1ca1c3de6d (patch)
treebf43f6d9ef8c37b8c1ca698ef0457676380ae69d /taskflow/patterns
parent3bc9183ee915ccf22e51350c6b839a6492555466 (diff)
downloadtaskflow-c4c03f8ca33307c43e307fb1ecc2ac1ca1c3de6d.tar.gz
Allow resuming stage to be interrupted.
Diffstat (limited to 'taskflow/patterns')
-rw-r--r--taskflow/patterns/ordered_workflow.py8
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