如果已部署的 DAG 使用的 Airflow 变量发生更改,是否会自动获取更改?
If an Airflow variable used by a deployed DAG is changed, does the change get picked up automatically?
Airflow 是否会自动检测已部署的 DAG 使用的已更改变量并立即应用更改,或者是否需要 DAG 手动重启或刷新才能应用已更改变量的新值?
气流变量存储在数据库中。 Airflow 不维护 DAG <-> 变量关系。变量不绑定到特定的 DAG。
当在您的代码中调用 Variable.get()
时,会填充变量的值。
如果在 DAG 代码中使用了 airflow 变量,如下所示,更改(python 变量间隔)将在执行调度程序时设置为该 airflow 变量的值下次。调度程序以较短的间隔周期性地执行。
# experimental_dag.py
default_args = {
'owner': 'anonymous',
'start_date': datetime.datetime(2021, 12, 1),
}
interval = Variable.get('interval', '@daily')
dag = DAG(
'experimental_dag',
default_args=default_args,
schedule_interval=interval
)
def write_log(ts):
with open('./output.txt', 'a') as f:
f.write(f'{ts}\n')
py_task = PythonOperator(
task_id='load_yesterday_data',
python_callable=write_log,
op_kwargs={
'ts': '{{ ts }}'
},
dag=dag
)
如果更改了DAG代码,比如上面的experimental_dag.py,这种情况下,肯定需要将DAG复制到dag文件夹(airflow.cfg中配置)
Airflow 是否会自动检测已部署的 DAG 使用的已更改变量并立即应用更改,或者是否需要 DAG 手动重启或刷新才能应用已更改变量的新值?
气流变量存储在数据库中。 Airflow 不维护 DAG <-> 变量关系。变量不绑定到特定的 DAG。
当在您的代码中调用 Variable.get()
时,会填充变量的值。
如果在 DAG 代码中使用了 airflow 变量,如下所示,更改(python 变量间隔)将在执行调度程序时设置为该 airflow 变量的值下次。调度程序以较短的间隔周期性地执行。
# experimental_dag.py
default_args = {
'owner': 'anonymous',
'start_date': datetime.datetime(2021, 12, 1),
}
interval = Variable.get('interval', '@daily')
dag = DAG(
'experimental_dag',
default_args=default_args,
schedule_interval=interval
)
def write_log(ts):
with open('./output.txt', 'a') as f:
f.write(f'{ts}\n')
py_task = PythonOperator(
task_id='load_yesterday_data',
python_callable=write_log,
op_kwargs={
'ts': '{{ ts }}'
},
dag=dag
)
如果更改了DAG代码,比如上面的experimental_dag.py,这种情况下,肯定需要将DAG复制到dag文件夹(airflow.cfg中配置)