Airflow apache启动时的空气流量变量
我正在学习气流,并计划设置一些变量,以便在不同的任务中使用。它们位于我的dags文件夹中,另存为Airflow apache启动时的空气流量变量,airflow,Airflow,我正在学习气流,并计划设置一些变量,以便在不同的任务中使用。它们位于我的dags文件夹中,另存为configs.json,如下所示: { "vars": { "task1_args": { "something": "This is task 1" }, "task2_args": { "something": "t
configs.json
,如下所示:
{
"vars": {
"task1_args": {
"something": "This is task 1"
},
"task2_args": {
"something": "this is task 2"
}
}
}
我知道我们可以输入管理-->变量-->上传文件。但我有两个问题:
我没有看到文档中提到过这一点,但这似乎是一件非常琐碎的事情。您想要的是
这里有一个未经测试的片段应该会有所帮助
from airflow.models import Variable
Variable.set(key="my_key", value="my_value")
- 因此,基本上您可以编写一个引导python脚本来为您进行此设置
- 在我们的团队中,我们使用这些脚本来设置所有
如果您想知道,下面是来自
谢谢,但这并不完全是我想要的——我所说的编辑实际上是指打开json文件并手动编辑一两个变量。我想知道是否有一种方法可以(1)在我的airflow实例中显示这样的编辑,而无需手动重新加载变量UI;(2)在airflow启动时自动导入
.json
文件的内容。我可以轻松地调整我的代码并实时更新,但这似乎不适用于变量它适用于一切,包括变量
s、池
s和连接
s。请参阅答案,它描述了如何创建动态工作流,并使用编程的变量更新动态更改DAG的结构(即使在DAG运行时)
@classmethod
@provide_session
def set(
cls,
key: str,
value: Any,
serialize_json: bool = False,
session: Session = None
):
"""
Sets a value for an Airflow Variable with a given Key
:param key: Variable Key
:param value: Value to set for the Variable
:param serialize_json: Serialize the value to a JSON string
:param session: SQL Alchemy Sessions
"""
if serialize_json:
stored_value = json.dumps(value, indent=2)
else:
stored_value = str(value)
Variable.delete(key, session=session)
session.add(Variable(key=key, val=stored_value))
session.flush()