无法将 DAG 名称提取到 Airflow 中的 JSON

Having trouble to extract a DAG name into a JSON in Airflow

我正在尝试将 DAG 名称设为以下 JSON:

INFO - {'conf': <airflow.configuration.AutoReloadableProxy object at ... >, 'dag': <DAG: dag-name-i-want-to-get>, 'ds': '2021-07-29' ... N }

顺便说一下,我在 Airflow 中使用以下函数得到了 JSON:

def execute_dag_run(**kwargs):
  print(kwargs)
  dag = kwargs['dag']
  print(type(dag))
  print(dag)

get_dag_run_task = PythonOperator(
  task_id='get_dag_run', 
  python_callable=execute_dag_run, 
  dag=dag, 
  provide_context=True
)

但是,如果我打印 type(dag):

,我会得到 class
INFO - <class 'airflow.models.dag.DAG'>

你知道如何在不进行手动提取的情况下获得这个吗?

如果要获取 dag 名称,您正在打印 dag 对象,您需要从 dag 对象中获取它:

def execute_dag_run(**kwargs):
    dag = kwargs['dag']
    print ("dag_id from dag:")
    print(dag.dag_id)   

或者,您也可以从 task_instance 获取它:

def execute_dag_run(**kwargs):
  ti = kwargs['task_instance']
  print ("dag_id from task instance:")
  print (ti.dag_id)

另一种选择是从 dag_run 获取它:

def execute_dag_run(**kwargs):
  dag_run = kwargs['dag_run']
  print("dag_id from dag_run:")
  print (dag_run.dag_id)