在气流中提取DAG名称到JSON中遇到麻烦



我试图获得DAG名称到以下JSON:

INFO - {'conf': <airflow.configuration.AutoReloadableProxy object at ... >, 'dag': <DAG: dag-name-i-want-to-get>, 'ds': '2021-07-29' ... N }
顺便说一下,我在气流中使用以下函数获得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
)

然而,我得到一个类,如果我打印类型(dag):

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)

最新更新