diff --git a/taskflow/engines/action_engine/engine.py b/taskflow/engines/action_engine/engine.py index 218f285a..83d5d5fe 100644 --- a/taskflow/engines/action_engine/engine.py +++ b/taskflow/engines/action_engine/engine.py @@ -77,8 +77,14 @@ class ActionEngine(base.EngineBase): @property def execution_graph(self): - self.compile() - return self._analyzer.execution_graph + """The graph of nodes to be executed. + + NOTE(harlowja): Only accessible after compilation has completed. + """ + g = None + if self._compiled and self._analyzer: + g = self._analyzer.execution_graph + return g @lock_utils.locked def run(self): diff --git a/taskflow/tests/unit/test_action_engine.py b/taskflow/tests/unit/test_action_engine.py index d6292bbe..26bbcd9d 100644 --- a/taskflow/tests/unit/test_action_engine.py +++ b/taskflow/tests/unit/test_action_engine.py @@ -464,6 +464,7 @@ class EngineGraphFlowTest(utils.EngineTestBase): utils.TaskNoRequiresNoReturns(name='task2')) engine = self._make_engine(flow) + engine.compile() graph = engine.execution_graph self.assertIsInstance(graph, networkx.DiGraph) @@ -471,6 +472,7 @@ class EngineGraphFlowTest(utils.EngineTestBase): flow = utils.TaskNoRequiresNoReturns(name='task1') engine = self._make_engine(flow) + engine.compile() graph = engine.execution_graph self.assertIsInstance(graph, networkx.DiGraph)