gpt4 book ai didi

python - Prefect 中的循环任务

转载 作者:行者123 更新时间:2023-12-04 13:08:36 27 4
gpt4 key购买 nike

我想一次又一次地循环执行任务,直到达到某个条件,然后再继续工作流程的其余部分。
到目前为止,我所拥有的是:

# Loop task
class MyLoop(Task):
def run(self):
loop_res = prefect.context.get("task_loop_result", 1)
print (loop_res)
if loop_res >= 10:
return loop_res
raise LOOP(result=loop_res+1)
但据我所知,这不适用于多项任务。
有没有办法进一步返回并一次循环执行多个任务?

最佳答案

解决方案只是创建一个单独的任务,该任务本身创建一个具有一个或多个参数的新流并调用 flow.run()。例如:

class MultipleTaskLoop(Task):
def run(self):
# Get previous value
loop_res = prefect.context.get("task_loop_result", 1)

# Create subflow
with Flow('Subflow', executor=LocalDaskExecutor()) as flow:
x = Parameter('x', default = 1)
loop1 = print_loop()
add = add_value(x)
loop2 = print_loop()
loop1.set_downstream(add)
add.set_downstream(loop2)

# Run subflow and extract result
subflow_res = flow.run(parameters={'x': loop_res})
new_res = subflow_res.result[add]._result.value

# Loop
if new_res >= 10:
return new_res
raise LOOP(result=new_res)
哪里 print_loop只需在输出中打印“循环”和 add_value给它收到的值加一。

关于python - Prefect 中的循环任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68103561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com