有没有一种方法可以在每次计划的流程运行时更新参数?

时间:2020-11-06 15:35:21

标签: prefect

我正在尝试找到一种方法来更新开始用于调度流程的每次迭代的参数。

例如,说我有一个计划在一年中每个星期一运行一次的流程。对于第一个星期一,流量需要使用例如5的参数运行。下一个星期一需要使用7等的参数来运行。每星期运行所需的参数将更改为常数。

根据文档,看来我可以为每次运行创建一个带有相应参数的时钟,但是对于计划进行多次运行的流程来说,这似乎过多了。

在Prefect中,有没有更简单的方法?

1 个答案:

答案 0 :(得分:0)

听起来您想将某种形式的业务逻辑封装到Parameter计算中,这是在Flow中添加新的Task的好用例:

import prefect
from prefect import task, Flow, Parameter


varying_param = Parameter("param", default=None) # none as the default

@task(name="Varying Parameter")
def param_calculation(p):
    time = prefect.context.scheduled_start_time 

    # if a value was provided, use it
    if p is not None:
        return p
    
    # do some calculations to decide what value is appropriate
    # and return it


with Flow("Minimal example") as flow:
    param_value = param_calculation(varying_param)
    # now use this value in downstream tasks