📁
prefect.docs
  • 介绍
  • 入门
    • 安装
    • Task和Flow
    • 触发器、关联task和信号
    • 为什么是Prefect
    • 为什么不是Airflow
  • 初级教程
    • ETL介绍
    • Prefect实现ETL
    • 使用Parameters
    • 失败处理
    • 调度执行
    • 水平扩展
    • task更多特性
  • 核心概念
    • Task.任务
    • Flow.流
    • Parameter.参数
    • State.状态
    • Engine.引擎
    • Execution.执行
    • Logging.日志
    • Mapping.映射
    • 通知和状态处理器
    • 持久化缓存
    • 结果对象和结果处理器
    • Schedule.调度计划
    • Secret.秘钥
    • Configuration.配置
    • 最佳实践
    • 常见问题
  • task库
    • Airtable
    • AWS.亚马逊云
    • Azure.微软云
    • Azure ML Service.微软云机器学习
    • Collection.集合
    • Constant.常量
    • Control Flow.控制流
    • Docker
    • Dropbox
    • Email
    • Function.函数
    • GCP.谷歌云
    • GitHub
    • Kubernetes
    • Operators.运算符
    • Postgres
    • Redis
    • RSS
    • Shell
    • Slack
    • Snowflake
    • SQLite
    • Strings.字符串
    • Twitter
  • 进阶教程
    • task映射并行和Prefect参数的高级特性
    • Prefect算子
    • 日志部署
    • Dask部署
    • ETL
    • 本地调试
    • Slack通知
    • Prefect Task剖析
    • 动态DAG和Task循环
    • 结果处理器
    • 工作流可视化
  • 样例
    • 概览
    • Airflow DAG
    • Task缓存
    • 按日收集github状态
    • ETL工作流
    • 工作流状态可视化
    • Docker Pipeline的函数式API
    • Github双周发布周期
    • Docker Pipeline的命令式API
    • 简易Map/Reduce
    • 参数化条件
    • 重试和映射
    • spaCy自然语言处理
    • 状态处理日志
    • Task循环
    • 发数据表至Airtable
  • 开发Issues
    • 内容提要
    • PIN-1:PINs介绍
    • PIN-2:数据处理器和元数据
    • PIN-3:执行环境
    • PIN-4:结果对象
    • PIN-5:组合Tasks
    • PIN-6:删除常量Tasks
    • PIN-7:存储和执行
    • PIN-8:事件驱动工作流
    • PIN-9:Prefect命令行
    • PIN 10:弹性调度计划
    • PIN 11:Task循环
    • PIN 12:环境回调
    • PIN 13:云部署
    • PIN-14:进阶事件驱动工作流
    • PIN-15:丢弃状态和信号
    • PIN-16:结果和目标
  • 开发规范
    • 概览
    • 编码风格
    • 文档注释
    • 测试
    • 贡献代码
    • 版本更新列表
    • 突破
  • 常见疑问
  • 开源社区
  • 代码贡献指南
Powered by GitBook
On this page
  • 环境变量
  • 类型自动转换
  • 用户自定义配置
  • 配置优先级
  • TOML
  • 扩展TOML

Was this helpful?

  1. 核心概念

Configuration.配置

PreviousSecret.秘钥Next最佳实践

Last updated 5 years ago

Was this helpful?

Prefect的设置默认存在名为config.toml的配置文件中。通常,不应直接编辑此文件以修改Prefect的设置。相反,应该将环境变量用于临时设置,或者为永久设置创建。

首次导入Prefect时,将对配置文件进行解析,并且可以在prefect.config中将其作为活动对象使用。 要访问任何值,请使用点号(例如,prefect.config.tasks.defaults.checkpoint)。

环境变量

可以通过环境变量设置任何小写的Prefect变量名的值。为此,请在变量前加上PREFECT并使用两个下划线()分隔键的每个部分。

例如,如果设置PREFECTTASKSDEFAULTS__MAX_RETRIES=4,则prefect.config.tasks.defaults.max_retries==4。

插入小写键变量

环境变量始终被Python代码当作小写配置键插入到运行上下文中,除非它们被指定为本地Secret。例如:

export PREFECT__LOGGING__LEVEL="INFO"
export PREFECT__CONTEXT__SECRETS__my_KEY="val"

将导致两个配置设置:一个用于config.logging.level,一个用于config.context.secrets.my_KEY(注意后者的大小写可能保留,遵循Prefect Secret的处理规则)。

类型自动转换

Prefect将尽力检测环境变量的类型并将其正确的转换。

  • “true”(无论哪个字母大小写)被转换为True

  • “false”(无论哪个字母大小写)被转换为False

  • 解析为整数的字符串将转换为整数

  • 解析为浮点数的字符串将转换为浮点数

  • 所有其他值仍为字符串

用户自定义配置

除了环境变量,用户还可以提供自定义配置文件。自定义配置中的所有值都将被加载覆盖默认值,这意味着用户配置仅需要包含要更改的值。

默认情况下,Prefect将在$HOME/.prefect/config.toml中查找用户配置文件,但是可以通过设置环境变量PREFECTUSER_CONFIG_PATH来更改该位置。注意变量名称中的双下划线(),这样可以确保它作为prefect.config.user_config_path在运行时可用。

配置优先级

环境变量配置优先级高于用户配置优先级,用户配置优先级高于默认配置优先级。

TOML

扩展TOML

Prefect通过两种形式的变量插值扩展了标准TOML。

环境变量插值

当Prefect加载配置时,任何包含以“$”为前缀的环境变量名称的变量标记都将被该环境变量的值替换。例如,如果环境中的DIR=/foo,则可以在配置中输入以下:

path = "$DIR/file.txt"

在这个场景, 代码中加载使用prefect.config.path == "/foo/file.txt",环境变量在运行上下文中始终被当作小写键来检索数据。

配置文件插入值(自解释)

如果字符串值引用任何其他配置键(用“${”和“}”括起来),则将在运行时内插入该键的值。重复此过程几次以解决多个引用问题。

例如,这可用于从已经定义的变量构建新的复合变量:

[api]

host = "localhost"
port = "5432"
url = "https://${api.host}:${api.port}"

使用

assert prefect.config.api.url == "https://localhost:5432"

甚至基于一个变量的值创建复杂的切换逻辑:

user = "${environments.${environment}}"

[environments]

    [environments.dev]
        user = "test"

    [environments.prod]
        user = "admin"

使用

assert prefect.config.environment == "prod"
assert prefect.config.user == "admin"

变量名可用性验证

首次加载配置时会递归验证。针对无效的配置定义引发ValueErrors。检查包括无效变量;因为Config对象具有类似于字典的方法,所以如果它们的任何自定义变量名覆盖了的方法之一,可能会产生问题。例如,“keys”是保留字,因为Config.keys()是一个重要的方法。

Prefect的配置使用编写,TOML是一种结构化文档,支持类型值和嵌套。

用户配置文件
TOML
Prefect官网
英版原文
联系译者