我试图获得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)