我尝试使用从外部DAG(DAG_2)接收的值更改DAG(DAG_1)中定义的变量值。
我们的想法是拥有变量' NAME'的默认值。在DAG_1内,但如果从外部DAG提供,则替换它的值。我能够成功地将所有外部提供的参数拉入DAG_1,但不能更改变量NAME的值。 DAG_1:
NAME = 'Stream_Agg_DIL_Dev_Airflow '
....
def set_config(ds, **kwargs):
PROPERTIES_FILE_PATH = DMP_ROOT+ kwargs['dag_run'].conf['config']
NAME = kwargs['dag_run'].conf['message']
return PROPERTIES_FILE_PATH, NAME
def get_pull(ds, **kwargs):
ti = kwargs['ti']
global NAME
NAME1 = ti.xcom_pull(task_ids='get_config_param', key='NAME')
print('NAME1 = ' + NAME1 + ', NAME = ' + NAME)
NAME = NAME1
print('NAME1 = ' + NAME1 + ', NAME = ' + NAME)
第二次打印时,内部函数NAME和NAME1相同,但从其他pythonOperator打印NAME获取原始值:
NAME = 'Stream_Agg_DIL_Dev_Airflow '