变量
变量是 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 文件中,这样可以使用源代码管理进行版本化;变量仅用于真正依赖于运行时的数值。
有关设置和管理变量的更多信息,请参阅 管理变量。