Airflow 气流任务是否可以发送上游失败的错误电子邮件通知?

Airflow 气流任务是否可以发送上游失败的错误电子邮件通知?,airflow,Airflow,我正在使用airflow计划一些任务,当上游任务失败时,我需要下游任务发送错误电子邮件通知。我使用下面的示例进行测试 dag_alert_task_callback = DAG( 'dag_alert_task_callback', default_args=default_args, schedule_interval=None ) t1 = PostgresOperator(task_id='create_schema',

我正在使用airflow计划一些任务,当上游任务失败时,我需要下游任务发送错误电子邮件通知。我使用下面的示例进行测试

dag_alert_task_callback = DAG(
    'dag_alert_task_callback',
    default_args=default_args,
    schedule_interval=None
)

t1 = PostgresOperator(task_id='create_schema',
                      sql="CREATE SCHEMA IF NOT EXISTS dbt_raw_data;",
                      postgres_conn_id='dbt_postgres_instance_raw_data',
                      autocommit=True,
                      database="dbtdb",
                      dag=dag_alert_task_callback)

t2 = PostgresOperator(task_id='drop_table_aisles',
                      sql="DROP TABLE IF EXISTS aisles;",
                      postgres_conn_id='dbt_postgres_instance_raw_data',
                      autocommit=True,
                      database="dbtdb",
                      dag=dag_alert_task_callback)

t5 = PostgresOperator(task_id='drop_table_test',
                      sql="DROP TABLE TEST;",
                      postgres_conn_id='dbt_postgres_instance_raw_data',
                      autocommit=True,
                      database="dbtdb",
                      dag=dag_alert_task_callback)

t3 = PostgresOperator(task_id='create_aisles',
                      sql="create table if not exists dbt_raw_data.aisles (aisle_id integer, aisle varchar(100) );",
                      postgres_conn_id='dbt_postgres_instance_raw_data',
                      autocommit=True,
                      database="dbtdb",
                      dag=dag_alert_task_callback,
                      email_on_failure=True)

t4 = PostgresOperator(task_id='load_aisles',
                      sql="COPY dbt_raw_data.aisles FROM '/sample_data/aisles.csv' DELIMITER ',' CSV HEADER;",
                      postgres_conn_id='dbt_postgres_instance_raw_data',
                      autocommit=True,
                      database="dbtdb",
                      dag=dag_alert_task_callback)

t1 >> [t2, t5] >> t3 >> t4
dag图形视图如下所示 [dag执行图形视图] [1]:
我测试运行dag并在t5中删除名为test的表,但当t5失败时,下游任务t3无法发送错误通知电子邮件,也无法满足我的需要。

您必须为每个任务定义on_failure_回调,以便在任务失败时执行此代码: