如何使用重复参数更新完美流程?
How does one update a prefect Flow with duplicate parameters?
使用 prefect,我想从另外两个流程创建一个新流程。
我收到的错误是 A task with the slug "add_num" already exists in this flow.
是否可以更新使用相同 tasks
或 Parameters
的 Flows
。下面是我要完成的一个最小示例。
`
from prefect import task, Flow, Parameter
@task
def add_one(x):
return x+1
with Flow("Flow 1") as flow_1:
add_num = Parameter("add_num", default=10)
new_num1 = add_one(add_num)
@task
def add_two(y):
return y+1
with Flow("Flow 2") as flow_2:
add_num = Parameter("add_num", default=10)
new_num2 = add_two(add_num)
combo_fl = Flow("Add Numbers")
combo_fl.update(flow_1)
combo_fl.update(flow_2, validate=False)
我确实在 slack 频道上看到了这段代码,可能与解决这个问题有关,但我不确定如何使用它。
class GlobalParameter(Parameter):
def __init__(self, name, slug=None, *args, **kwargs):
super().__init__(name=name, *args, **kwargs)
self.slug = slug or uuid.uuid4()
提前致谢。
因为参数在 API 中由名称唯一标识,您不能合并具有相同名称的不同参数的两个流。但是,您可以做的是在每个流中使用一个公共参数,如下所示:
from prefect import task, Flow, Parameter
## initialize the Parameter outside of any
## Flow context
add_num = Parameter("add_num", default=10)
@task
def add_one(x):
return x+1
with Flow("Flow 1") as flow_1:
new_num1 = add_one(add_num)
@task
def add_two(y):
return y+1
with Flow("Flow 2") as flow_2:
new_num2 = add_two(add_num)
combo_fl = Flow("Add Numbers")
combo_fl.update(flow_1)
combo_fl.update(flow_2, validate=False)
因为正在使用的参数实际上是参数的同一个实例class,您的更新将成功。
使用 prefect,我想从另外两个流程创建一个新流程。
我收到的错误是 A task with the slug "add_num" already exists in this flow.
是否可以更新使用相同 tasks
或 Parameters
的 Flows
。下面是我要完成的一个最小示例。
`
from prefect import task, Flow, Parameter
@task
def add_one(x):
return x+1
with Flow("Flow 1") as flow_1:
add_num = Parameter("add_num", default=10)
new_num1 = add_one(add_num)
@task
def add_two(y):
return y+1
with Flow("Flow 2") as flow_2:
add_num = Parameter("add_num", default=10)
new_num2 = add_two(add_num)
combo_fl = Flow("Add Numbers")
combo_fl.update(flow_1)
combo_fl.update(flow_2, validate=False)
我确实在 slack 频道上看到了这段代码,可能与解决这个问题有关,但我不确定如何使用它。
class GlobalParameter(Parameter):
def __init__(self, name, slug=None, *args, **kwargs):
super().__init__(name=name, *args, **kwargs)
self.slug = slug or uuid.uuid4()
提前致谢。
因为参数在 API 中由名称唯一标识,您不能合并具有相同名称的不同参数的两个流。但是,您可以做的是在每个流中使用一个公共参数,如下所示:
from prefect import task, Flow, Parameter
## initialize the Parameter outside of any
## Flow context
add_num = Parameter("add_num", default=10)
@task
def add_one(x):
return x+1
with Flow("Flow 1") as flow_1:
new_num1 = add_one(add_num)
@task
def add_two(y):
return y+1
with Flow("Flow 2") as flow_2:
new_num2 = add_two(add_num)
combo_fl = Flow("Add Numbers")
combo_fl.update(flow_1)
combo_fl.update(flow_2, validate=False)
因为正在使用的参数实际上是参数的同一个实例class,您的更新将成功。