Airflow 2025 峰会将于 10 月 07-09 日举行。立即注册以获得早鸟票!

设置配置选项

首次运行 Airflow 时,它将在您的 $AIRFLOW_HOME 目录(默认为 ~/airflow)中创建一个名为 airflow.cfg 的文件。这样做是为了方便您“试用”Airflow 配置。

但是,对于生产环境,建议您使用命令行生成配置

airflow config list --defaults

该命令将产生输出,您可以将其复制到您的配置文件中进行编辑。

它将包含所有默认配置选项和示例,并进行了良好的注释,因此您只需取消注释并修改您想要更改的选项即可。这样,您可以轻松跟踪所有与默认值不同的配置选项,并且当新版本的 Airflow 发布时,您也可以轻松地将您的安装升级到新版本,并自动使用其中已更改的现有选项的默认值。

您可以将其重定向到您的配置文件并进行编辑。

airflow config list --defaults > "${AIRFLOW_HOME}/airflow.cfg"

您也可以使用此格式通过环境变量设置选项:AIRFLOW__{SECTION}__{KEY}(请注意双下划线)。

例如,元数据数据库连接字符串可以在 airflow.cfg 中按如下方式设置:

[database]
sql_alchemy_conn = my_conn_string

或者通过创建相应的环境变量:

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string

请注意,当部分名称中包含点时,设置环境变量时必须将其替换为下划线。例如,考虑虚拟部分 providers.some_provider

[providers.some_provider]
this_param = true
export AIRFLOW__PROVIDERS_SOME_PROVIDER__THIS_PARAM=true

您也可以通过在键后附加 _cmd 来在运行时派生连接字符串,如下所示:

[database]
sql_alchemy_conn_cmd = bash_command_to_run

您也可以通过在键后附加 _secret 来在运行时派生连接字符串,如下所示:

[database]
sql_alchemy_conn_secret = sql_alchemy_conn
# You can also add a nested path
# example:
# sql_alchemy_conn_secret = database/sql_alchemy_conn

这将从 Secret Backends(例如 Hashicorp Vault)检索配置选项。有关更多详情,请参阅 Secret Backends

以下配置选项支持 _cmd_secret 版本:

  • sql_alchemy_conn[database] 部分中

  • fernet_key[core] 部分中

  • broker_url[celery] 部分中

  • flower_basic_auth[celery] 部分中

  • result_backend[celery] 部分中

  • password[atlas] 部分中

  • smtp_password[smtp] 部分中

  • secret_key[webserver] 部分中

_cmd 配置选项也可以像普通配置选项一样使用相应的环境变量设置。例如:

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD=bash_command_to_run

类似地,_secret 配置选项也可以使用相应的环境变量设置。例如:

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET=sql_alchemy_conn

注意

配置选项必须遵循 secrets backend 中定义的配置前缀命名约定。这意味着 sql_alchemy_conn 不是使用连接前缀定义,而是使用配置前缀定义。例如,它应命名为 airflow/config/sql_alchemy_conn

这样做的目的是不在主机上的纯文本文件中存储密码。

所有配置选项的通用优先级顺序如下:

  1. 设置为环境变量 (AIRFLOW__DATABASE__SQL_ALCHEMY_CONN)

  2. 设置为命令环境变量 (AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD)

  3. 设置为 secret 环境变量 (AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET)

  4. airflow.cfg 中设置

  5. airflow.cfg 中的命令

  6. airflow.cfg 中的 secret key

  7. Airflow 内置默认值

注意

对于 Airflow 版本 >= 2.2.1, < 2.3.0,在某些情况下,Airflow 的内置默认值优先于 airflow.cfg 中的 command 和 secret key。

您可以使用 airflow config list 命令检查当前配置。

如果您只想查看一个选项的值,可以使用 airflow config get-value 命令,如下例所示。

$ airflow config get-value core executor
LocalExecutor

注意

有关配置选项的更多信息,请参阅 配置参考

注意

有关 Python 和 Airflow 如何管理模块的详情,请参阅 模块管理

注意

在所有 Airflow 组件中使用相同的配置。虽然并非每个组件都需要所有配置,但有些配置必须相同,否则它们将无法按预期工作。一个很好的例子是 secret_key,它在 Webserver 和 Worker 上必须相同,以便 Webserver 可以从 Worker 获取日志。

webserver key 也用于在检索日志时授权对 Celery worker 的请求。使用 secret key 生成的令牌具有较短的有效期 - 请确保运行 Airflow 组件的 *所有* 机器上的时间是同步的(例如使用 ntpd),否则访问日志时可能会出现“forbidden”错误。

配置本地设置

一些 Airflow 配置是通过本地设置进行的,因为它们需要更改 Airflow 初始化时执行的代码。通常在详细文档中会提到在哪里配置这些本地设置 - 这通常在 airflow_local_settings.py 文件中完成。

您应该创建一个 airflow_local_settings.py 文件,并将其放在 sys.path 中的目录或 $AIRFLOW_HOME/config 文件夹中。(Airflow 在初始化时会将 $AIRFLOW_HOME/config 添加到 sys.path 中)从 Airflow 2.10.1 开始,$AIRFLOW_HOME/dags 文件夹在初始化时不再包含在 sys.path 中,因此该文件夹中的任何本地设置都不会被导入。请确保 airflow_local_settings.py 位于初始化期间属于 sys.path 的路径中,例如 $AIRFLOW_HOME/config。有关此更改的更多背景信息,请参阅邮件列表公告

您可以在此处查看此类本地设置的示例:

您可以通过这种方式配置的示例设置:

此条目有帮助吗?