Airflow 对任何DAG故障发出全局警报

Airflow 对任何DAG故障发出全局警报,airflow,Airflow,我目前有100多个DAG在生产中运行。我知道如何在“故障”回调时添加警报和上游故障触发的操作员警报,但有没有办法将气流本身配置为在DAG故障时始终发送电子邮件,而不必逐一检查和更新我的每个DAG以发出故障警报?据我所知,但我有这个助手来处理全局/默认dag/运算符设置: def on_failure_callback(context): ... def on_success_callback(context): ... def build_default_args(**kwa

我目前有100多个DAG在生产中运行。我知道如何在“故障”回调时添加
警报和上游故障触发的操作员警报,但有没有办法将气流本身配置为在DAG故障时始终发送电子邮件,而不必逐一检查和更新我的每个DAG以发出故障警报?

据我所知,但我有这个助手来处理全局/默认dag/运算符设置:

def on_failure_callback(context):
    ...

def on_success_callback(context):
    ...

def build_default_args(**kwargs):
    default_args = {
        'on_failure_callback': on_failure_callback,
        'on_success_callback': on_success_callback,
        'owner': 'me',
        'queue': 'default',
        'execution_timeout': timedelta(hours=1),
        'retries': 3,
        'retry_delay': timedelta(seconds=10),
    }
    default_args.update(kwargs)
    return default_args
然后在每个DAG中:

dag = DAG(
    dag_id='my_dag',
    default_args=build_default_args(
        start_date=datetime(2017, 9, 20),
        execution_timeout=timedelta(hours=8),  # overrides default
    ),
    schedule_interval='@hourly',
)

或者使用一些自定义的基本
DAG
类…但无论哪种方式,您都必须返回并更改您的100+DAG一次。

据我所知不是这样,但我有这个助手来处理全局/默认DAG/操作员设置:

def on_failure_callback(context):
    ...

def on_success_callback(context):
    ...

def build_default_args(**kwargs):
    default_args = {
        'on_failure_callback': on_failure_callback,
        'on_success_callback': on_success_callback,
        'owner': 'me',
        'queue': 'default',
        'execution_timeout': timedelta(hours=1),
        'retries': 3,
        'retry_delay': timedelta(seconds=10),
    }
    default_args.update(kwargs)
    return default_args
然后在每个DAG中:

dag = DAG(
    dag_id='my_dag',
    default_args=build_default_args(
        start_date=datetime(2017, 9, 20),
        execution_timeout=timedelta(hours=8),  # overrides default
    ),
    schedule_interval='@hourly',
)

或者选择一些定制的基本
DAG
class…但无论哪种方式,您都必须返回并更改您的100+DAG一次。

感谢您的回复!很抱歉,接受的时间太晚了。感谢您的回复!很抱歉,接受的时间太晚了。