可视化流程结构#
学习如何查看您的流程的整体结构。
使用其 visualize()
方法可以快速查看流程的结构。调用此方法会尝试生成流程和任务的示意图,而无需实际运行您的流程代码。
警告
在调用visualize()
函数时,位于流程或任务之外的函数和代码仍然会被执行。这可能会导致一些意外的结果。为了避免这种情况,请将您的代码放入任务中。
要使用visualize()
方法,您必须在系统路径中安装 Graphviz。请从graphviz download/下载并安装Graphviz。
备注
仅仅安装graphviz
Python包是不够的。
from prefect import flow, task
@task(name="Print Hello")
def print_hello(name):
msg = f"Hello {name}!"
print(msg)
return msg
@task(name="Print Hello Again")
def print_hello_again(name):
msg = f"Hello {name}!"
print(msg)
return msg
@flow(name="Hello Flow")
def hello_world(name="world"):
message = print_hello(name)
message2 = print_hello_again(message)
if __name__ == "__main__":
hello_world.visualize()
Prefect 无法自动为包含循环或 if/else 控制流的动态工作流生成图表。在这种情况下,您可以为任务提供模拟返回值以用于 visualize()
调用。
from prefect import flow, task
@task(viz_return_value=[4])
def get_list():
return [1, 2, 3]
@task
def append_one(n):
return n.append(6)
@flow
def viz_return_value_tracked():
l = get_list()
for num in range(3):
l.append(5)
append_one(l)
if __name__ == "__main__":
viz_return_value_tracked.visualize()