Skip to content

Instantly share code, notes, and snippets.

@harlowja
Created April 18, 2017 18:53
Show Gist options
  • Save harlowja/1151348e065c3156d62d4870cee3471e to your computer and use it in GitHub Desktop.
Save harlowja/1151348e065c3156d62d4870cee3471e to your computer and use it in GitHub Desktop.
$ python test.py
DEBUG:taskflow.engines.helpers:Looking for 'default' engine driver in 'taskflow.engines'
DEBUG:stevedore.extension:found extension EntryPoint.parse('default = taskflow.engines.action_engine.engine:SerialActionEngine')
DEBUG:stevedore.extension:found extension EntryPoint.parse('serial = taskflow.engines.action_engine.engine:SerialActionEngine')
DEBUG:stevedore.extension:found extension EntryPoint.parse('workers = taskflow.engines.worker_based.engine:WorkerBasedActionEngine')
DEBUG:stevedore.extension:found extension EntryPoint.parse('worker-based = taskflow.engines.worker_based.engine:WorkerBasedActionEngine')
DEBUG:stevedore.extension:found extension EntryPoint.parse('parallel = taskflow.engines.action_engine.engine:ParallelActionEngine')
Level 5:taskflow.engines.action_engine.compiler:Compiling 'linear_flow.Flow: test(len=2)'
Level 5:taskflow.engines.action_engine.compiler: Compiling '__main__.HappyTask==1.0'
Level 5:taskflow.engines.action_engine.compiler: Decomposed '__main__.HappyTask==1.0' into:
Level 5:taskflow.engines.action_engine.compiler: Graph:
Level 5:taskflow.engines.action_engine.compiler: Name: __main__.HappyTask
Level 5:taskflow.engines.action_engine.compiler: Type: DiGraph
Level 5:taskflow.engines.action_engine.compiler: Frozen: False
Level 5:taskflow.engines.action_engine.compiler: Density: 0.000
Level 5:taskflow.engines.action_engine.compiler: Nodes: 1
Level 5:taskflow.engines.action_engine.compiler: - __main__.HappyTask==1.0 ({'kind': 'task'})
Level 5:taskflow.engines.action_engine.compiler: Edges: 0
Level 5:taskflow.engines.action_engine.compiler: Cycles: 0
Level 5:taskflow.engines.action_engine.compiler: Hierarchy:
Level 5:taskflow.engines.action_engine.compiler: __main__.HappyTask==1.0
Level 5:taskflow.engines.action_engine.compiler: Compiling '__main__.MyTask==1.0'
Level 5:taskflow.engines.action_engine.compiler: Decomposed '__main__.MyTask==1.0' into:
Level 5:taskflow.engines.action_engine.compiler: Graph:
Level 5:taskflow.engines.action_engine.compiler: Name: __main__.MyTask
Level 5:taskflow.engines.action_engine.compiler: Type: DiGraph
Level 5:taskflow.engines.action_engine.compiler: Frozen: False
Level 5:taskflow.engines.action_engine.compiler: Density: 0.000
Level 5:taskflow.engines.action_engine.compiler: Nodes: 1
Level 5:taskflow.engines.action_engine.compiler: - __main__.MyTask==1.0 ({'kind': 'task'})
Level 5:taskflow.engines.action_engine.compiler: Edges: 0
Level 5:taskflow.engines.action_engine.compiler: Cycles: 0
Level 5:taskflow.engines.action_engine.compiler: Hierarchy:
Level 5:taskflow.engines.action_engine.compiler: __main__.MyTask==1.0
Level 5:taskflow.engines.action_engine.compiler:Decomposed 'linear_flow.Flow: test(len=2)' into:
Level 5:taskflow.engines.action_engine.compiler: Graph:
Level 5:taskflow.engines.action_engine.compiler: Name: test
Level 5:taskflow.engines.action_engine.compiler: Type: DiGraph
Level 5:taskflow.engines.action_engine.compiler: Frozen: False
Level 5:taskflow.engines.action_engine.compiler: Density: 0.250
Level 5:taskflow.engines.action_engine.compiler: Nodes: 4
Level 5:taskflow.engines.action_engine.compiler: - __main__.HappyTask==1.0 ({'kind': 'task'})
Level 5:taskflow.engines.action_engine.compiler: - __main__.MyTask==1.0 ({'kind': 'task'})
Level 5:taskflow.engines.action_engine.compiler: - linear_flow.Flow: test(len=2)[$] ({'kind': 'flow_end', 'noop': True})
Level 5:taskflow.engines.action_engine.compiler: - linear_flow.Flow: test(len=2) ({'kind': 'flow', 'noop': True})
Level 5:taskflow.engines.action_engine.compiler: Edges: 3
Level 5:taskflow.engines.action_engine.compiler: __main__.HappyTask==1.0 -> __main__.MyTask==1.0 ({'invariant': True})
Level 5:taskflow.engines.action_engine.compiler: __main__.MyTask==1.0 -> linear_flow.Flow: test(len=2)[$] ({'invariant': True})
Level 5:taskflow.engines.action_engine.compiler: linear_flow.Flow: test(len=2) -> __main__.HappyTask==1.0 ({'invariant': True})
Level 5:taskflow.engines.action_engine.compiler: Cycles: 0
Level 5:taskflow.engines.action_engine.compiler: Hierarchy:
Level 5:taskflow.engines.action_engine.compiler: linear_flow.Flow: test(len=2)
Level 5:taskflow.engines.action_engine.compiler: |____main__.HappyTask==1.0
Level 5:taskflow.engines.action_engine.compiler: |____main__.MyTask==1.0
Level 5:taskflow.engines.action_engine.runtime:Compiled {'scope_walker': <taskflow.engines.action_engine.scopes.ScopeWalker object at 0x106d11790>, 'change_state_handler': <functools.partial object at 0x106d18ec0>, 'edge_deciders': (), 'check_transition_handler': <function check_task_transition at 0x106646e60>, 'scheduler': <taskflow.engines.action_engine.scheduler.TaskScheduler object at 0x106d11710>, 'action': <taskflow.engines.action_engine.actions.task.TaskAction object at 0x106d11550>} metadata for node __main__.HappyTask (task)
Level 5:taskflow.engines.action_engine.runtime:Compiled {'scope_walker': <taskflow.engines.action_engine.scopes.ScopeWalker object at 0x106d117d0>, 'change_state_handler': <functools.partial object at 0x106d18ec0>, 'edge_deciders': (), 'check_transition_handler': <function check_task_transition at 0x106646e60>, 'scheduler': <taskflow.engines.action_engine.scheduler.TaskScheduler object at 0x106d11710>, 'action': <taskflow.engines.action_engine.actions.task.TaskAction object at 0x106d11550>} metadata for node __main__.MyTask (task)
Level 5:taskflow.engines.action_engine.engine:Validating scoping and argument visibility for execution graph with 4 nodes and 3 edges with density 0.250
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'UNDEFINED' in response to event 'start'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'RESUMING' in response to event 'start'
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to execute
Level 5:taskflow.engines.action_engine.selector:Able to let '__main__.HappyTask==1.0' execute
Level 5:taskflow.engines.action_engine.deciders:Out of 0 deciders there were [] 'do no run it' voters, [] 'do run it' voters and [] 'ignored' voters for transition to atom '__main__.HappyTask' given history {}
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to execute
Level 5:taskflow.engines.action_engine.selector:Unable to begin to execute since predecessor atom '__main__.HappyTask==1.0' is in state PENDING with intention EXECUTE
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.HappyTask==1.0' is not ready to revert since it can not transition to REVERTING from its current state PENDING
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.MyTask==1.0' is not ready to revert since it can not transition to REVERTING from its current state PENDING
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'RESUMING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'SCHEDULING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'SCHEDULING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'WAITING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'WAITING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'ANALYZING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to execute
Level 5:taskflow.engines.action_engine.selector:Able to let '__main__.MyTask==1.0' execute
Level 5:taskflow.engines.action_engine.deciders:Out of 0 deciders there were [] 'do no run it' voters, [] 'do run it' voters and [] 'ignored' voters for transition to atom '__main__.MyTask' given history {}
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'ANALYZING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'SCHEDULING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'SCHEDULING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'WAITING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'WAITING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'ANALYZING' in response to event 'examine_finished'
DEBUG:taskflow.engines.action_engine.completer:Applying resolver 'RevertAll(strategy=REVERT_ALL)' to resolve failure 'Failure: ValueError: foo' of atom '__main__.MyTask==1.0'
Level 5:taskflow.engines.action_engine.completer:Modified/tweaked [(<__main__.HappyTask __main__.HappyTask==1.0>, None, 'REVERT'), (<__main__.MyTask __main__.MyTask==1.0>, None, 'REVERT')] nodes while applying resolver 'RevertAll(strategy=REVERT_ALL)'
DEBUG:taskflow.engines.action_engine.builder:Had failure 'Failure: ValueError: foo' (in response to outcome 'executed') during completion of atom '__main__.MyTask==1.0' (intention is/was to REVERT)
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Unable to begin to revert since successor atom '__main__.MyTask==1.0' is in state FAILURE
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Able to let '__main__.MyTask==1.0' revert
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'ANALYZING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'SCHEDULING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'SCHEDULING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'WAITING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'WAITING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'ANALYZING' in response to event 'examine_finished'
DEBUG:taskflow.engines.action_engine.builder:Had failure 'Failure: ValueError: bar' (in response to outcome 'reverted') during completion of atom '__main__.MyTask==1.0' (intention is/was to REVERT)
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Able to let '__main__.HappyTask==1.0' revert
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'ANALYZING' in response to event 'schedule_next'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'SCHEDULING' in response to event 'schedule_next'
undoing
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'SCHEDULING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'WAITING' in response to event 'wait_finished'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'WAITING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'ANALYZING' in response to event 'examine_finished'
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'ANALYZING' in response to event 'completed'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'GAME_OVER' in response to event 'completed'
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to execute
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.HappyTask==1.0' is not ready to execute since it can not transition to RUNNING from its current state REVERTED
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to execute
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.MyTask==1.0' is not ready to execute since it can not transition to RUNNING from its current state REVERT_FAILURE
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.HappyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.HappyTask==1.0' is not ready to revert since it can not transition to REVERTING from its current state REVERTED
Level 5:taskflow.engines.action_engine.selector:Checking if '__main__.MyTask==1.0' is ready to revert
Level 5:taskflow.engines.action_engine.selector:Atom '__main__.MyTask==1.0' is not ready to revert since it can not transition to REVERTING from its current state REVERT_FAILURE
Level 5:taskflow.engines.action_engine.builder:Exiting old state 'GAME_OVER' in response to event 'reverted'
Level 5:taskflow.engines.action_engine.builder:Entering new state 'REVERTED' in response to event 'reverted'
Traceback (most recent call last):
File "test.py", line 25, in <module>
eng.run(flo)
File "/Users/jxharlow/Dev/taskflow/taskflow/engines/helpers.py", line 162, in run
engine.run()
File "/Users/jxharlow/Dev/taskflow/taskflow/engines/action_engine/engine.py", line 247, in run
for _state in self.run_iter(timeout=timeout):
File "/Users/jxharlow/Dev/taskflow/taskflow/engines/action_engine/engine.py", line 340, in run_iter
failure.Failure.reraise_if_any(er_failures)
File "/Users/jxharlow/Dev/taskflow/taskflow/types/failure.py", line 338, in reraise_if_any
raise exc.WrappedFailure(failures)
taskflow.exceptions.WrappedFailure: WrappedFailure: [Failure: ValueError: foo, Failure: ValueError: bar]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment