【发布时间】:2022-12-04 07:58:07
【问题描述】:
让我们以 DAG 为例。
这是它的代码。
import logging
from airflow import DAG
from datetime import datetime, timedelta
from airflow.models import TaskInstance
from airflow.operators.python import PythonOperator
from airflow.operators.dummy import DummyOperator
def task_failure_notification_alert(context):
logging.info("Task context details: %s", str(context))
def dag_failure_notification_alert(context):
logging.info("DAG context details: %s", str(context))
def red_exception_task(ti: TaskInstance, **kwargs):
raise Exception('red')
default_args = {
"owner": "analytics",
"start_date": datetime(2021, 12, 12),
'retries': 0,
'retry_delay': timedelta(),
"schedule_interval": "@daily"
}
dag = DAG('logger_dag',
default_args=default_args,
catchup=False,
on_failure_callback=dag_failure_notification_alert
)
start_task = DummyOperator(task_id="start_task", dag=dag, on_failure_callback=task_failure_notification_alert)
red_task = PythonOperator(
dag=dag,
task_id='red_task',
python_callable=red_exception_task,
provide_context=True,
on_failure_callback=task_failure_notification_alert
)
end_task = DummyOperator(task_id="end_task", dag=dag, on_failure_callback=task_failure_notification_alert)
start_task >> red_task >> end_task
我们可以看到两个函数,即 task_failure_notification_alert 和 dag_failure_notification_alert 在发生故障时被调用。
我们可以通过以下步骤查看任务失败时的日志。
我们可以看到任务的日志如下。
但我无法在 UI 的任何位置找到 DAG 的 on_failure_callback 的日志。我们在哪里可以看到它?
【问题讨论】:
-
气流用户界面似乎没有显示这种日志?我已经从命令行和 UI 在独立实例上运行了您的代码,并且显示执行 dag 回调的日志行在那里:~/airflow/logs/scheduler/[current_date]/dag_name.py 但是我是无法通过 UI 找到它...
标签: airflow directed-acyclic-graphs