Prefect任务结果自动保存占满磁盘,如何禁用或修改存储路径
Prefect任务结果存储问题解决方案
配置不生效原因
你设置的PREFECT__FLOWS__CHECKPOINTING=false是Prefect 1.x版本专属的配置项,如果你当前使用的是Prefect 2.x版本,该配置已经废弃,所以不会生效。你可以根据自己使用的版本选择对应方案:
方案一:关闭结果自动保存功能
Prefect 2.x版本
- 全局关闭:在启动Prefect服务、运行Flow前,设置系统环境变量
PREFECT_RESULTS_PERSIST_BY_DEFAULT=false,配置后需要重启所有Prefect相关进程(包括Agent、Worker、Flow运行进程)才会生效。 - 单个Flow/Task单独关闭:定义时直接指定
persist_result=False参数,优先级高于全局配置,示例如下:
from prefect import flow, task # 单Task关闭结果存储 @task(persist_result=False) def demo_task(): return "task运行结果" # 单Flow关闭所有子任务的结果存储 @flow(persist_result=False) def demo_flow(): return demo_task()
Prefect 1.x版本
- 全局关闭:除设置
PREFECT__FLOWS__CHECKPOINTING=false外,需要确认你的Flow、Task定义中没有手动指定checkpoint=True参数,手动指定的参数优先级高于环境变量,会导致全局配置失效。 - 单个Task关闭:定义Task时添加
checkpoint=False参数即可。
方案二:修改默认存储目录
如果不需要关闭结果存储,只需要更换存储路径避免占满系统盘,可以按如下配置:
Prefect 2.x版本
- 方式1:修改Prefect根目录,所有Prefect运行产生的缓存、结果都会存储到新路径下,设置环境变量
PREFECT_HOME=/你的自定义存储绝对路径,结果会默认存储到该路径下的results子目录。 - 方式2:仅修改结果存储路径,设置环境变量
PREFECT_RESULTS_LOCAL_STORAGE_PATH=/你的自定义结果存储绝对路径。
Prefect 1.x版本
设置环境变量PREFECT__HOME_DIR=/你的自定义存储绝对路径即可。
内容的提问来源于stack exchange,提问作者GolD.
相关产品推荐
相关产品推荐

