变量

变量是 Airflow 的运行时配置概念——一种全局的键/值存储,可在任务中查询,并且可以通过 Airflow 的用户界面轻松设置,或以 JSON 文件批量上传。

要使用它们,只需导入并在 Variable 模型上调用 get

from airflow.sdk import Variable

# Normal call style
foo = Variable.get("foo")

# Auto-deserializes a JSON value
bar = Variable.get("bar", deserialize_json=True)

# Returns the value of default (None) if the variable is not set
baz = Variable.get("baz", default=None)

你也可以通过任务上下文使用 get_current_context() 访问变量。

from airflow.sdk import get_current_context


def my_task():
    context = get_current_context()
    var = context["var"]
    my_variable = var["value"].get("my_variable_name")
    return my_variable

字典 context["var"] 提供了两种访问变量的方式。

  • var["value"]:返回变量的原始字符串值。

  • var["json"]:返回变量的 JSON 值。当变量存储字典、列表或其他结构化数据时,这非常有用。

你也可以在 模板 中使用它们。

# Raw value
echo {{ var.value.<variable_name> }}

# Auto-deserialize JSON value
echo {{ var.json.<variable_name> }}

变量是 全局 的,除非为特定的 Airflow 团队 创建(如果你的环境配置为使用多团队模式)。全局变量应仅用于覆盖整个安装的整体配置。基于团队的变量应用于与特定团队相关的整体配置。若要在任务/算子之间传递数据,应该使用 XComs 代替。

我们也建议你尽量将大部分设置和配置放在 DAG 文件中,这样可以使用源代码管理进行版本化;变量仅用于真正依赖于运行时的数值。

有关设置和管理变量的更多信息,请参阅 管理变量

此条目是否有帮助?