通过文件目标完美缓存

Dah*_*ahn 2 python prefect

在阅读了有关基于文件目标的输出缓存的 文档后,我认为此工作流程应该是输出缓存的示例:

from time import sleep
from prefect import Flow, task
from prefect.engine.results import LocalResult


@task(target="func_task_target.txt", checkpoint=True, 
      result=LocalResult(dir="~/.prefect"))
def func_task():
    sleep(5)
    return 99

with Flow("Test-cache") as flow:
    func_task()

if __name__ == '__main__':
    flow.run()
Run Code Online (Sandbox Code Playgroud)

我希望func_task运行一次,进行缓存,然后在下次运行流程时使用缓存的值。然而,似乎func_task每次都会运行。

我哪里出错了?或者我误解了文档?

Sul*_*man 5

尝试将环境变量设置PREFECT__FLOWS__CHECKPOINTINGTrue

import os
os.environ["PREFECT__FLOWS__CHECKPOINTING"] = "true"
Run Code Online (Sandbox Code Playgroud)

您还可以更改结果目录

os.environ["PREFECT__HOME_DIR"] = "path to dir"
Run Code Online (Sandbox Code Playgroud)

  • 这确实有效,**只要我在导入 prefect 之前设置变量**。谢谢。 (2认同)