Airflow 显式跳过DAG时的松弛通知

Airflow 显式跳过DAG时的松弛通知,airflow,slack,slack-api,Airflow,Slack,Slack Api,在Airflow中,我知道您可以通过on_success(打开成功)回调和on_failure(打开失败)回调自动发送松弛通知,在我的情况下,这两种回调都工作正常 在我的用例中,我有一个ETL,如果当前数据为空且工作正常,它将引发AirflowSkipException。但这将向我的同事发送成功通知 我想知道是否有像on_skip_callback这样的东西,或者有一种方法可以向我的slack发送我的DAG被跳过的通知 任何帮助都将不胜感激。谢谢 编辑:为我的ETL添加了代码引用。数据点是从数据

在Airflow中,我知道您可以通过on_success(打开成功)回调和on_failure(打开失败)回调自动发送松弛通知,在我的情况下,这两种回调都工作正常

在我的用例中,我有一个ETL,如果当前数据为空且工作正常,它将引发AirflowSkipException。但这将向我的同事发送成功通知

我想知道是否有像on_skip_callback这样的东西,或者有一种方法可以向我的slack发送我的DAG被跳过的通知

任何帮助都将不胜感激。谢谢

编辑:为我的ETL添加了代码引用。数据点是从数据库中获取的,它可以每天更改,有时如果没有要处理的数据,则数据点将为空,反之亦然


def ETL_函数():
#检索数据代码
.... 
#验证以检查ETL数据是否为空
如果不是数据点:
打印(“输出日志:未找到ETL数据/为空”)
打印(“输出日志:由于数据为空而跳过ETL,跳过ETL…”)
上升气流速度异常
#返回错误
其他:
打印(“输出日志:找到ETL数据”)
打印(“输出日志:ETL持续到期数据可用,正在运行ETL……”)
#返回真值
#ETL过程代码
....
ETL_function_Task=PythonOperator(
task_id='ETL_function',
提供上下文=True,
python\u callable=fleet\u behavior\u idling,
在成功回调=任务成功松弛警报时,
dag=dag,
)

Hi@Anindhito Irmandharu

为此,您可以使用从PythonOperator派生的
shortcircuit操作符

def ETL_function():
    ...
    # Validation to check if ETL data is empty
    if not datapoints:
        print("OUTPUT LOG : ETL Data not found/empty")
        print("OUTPUT LOG : ETL skipped due to empty data, Skipping ETL ...... ")
        return False
    else : 
        print("OUTPUT LOG : ETL Data found")
        print("OUTPUT LOG : ETL continued due data available , Running ETL ...... ")
        return True 

ETL_function_Task = ShortCircuitOperator(
    task_id="ETL_function",
    python_callable= ETL_function,
    provide_context=True,
    dag=dag,
)

ETL_function_Task >> downstream_Tasks
注意:您的下游任务将被跳过,但此任务“ETL_函数_任务”将进入成功状态。我不太清楚为什么需要为成功执行的任务发送延迟通知。 虽然你可以很容易地改变

on_success_callback=任务_success_slack_警报


根据您的要求。在您正在使用的slack钩子中编写一个新的
任务\u跳过\u slack\u警报。

在使用“AirflowskipeException”的地方,您可以共享您的ETL代码吗?它应该将任务的状态更改为“跳过”,而不是“成功”。好的,iv'e更新了我的问题并添加了我的代码@BinoyJI。我已经为成功执行的任务添加了松弛通知,以通知我的ETL任务成功运行。谢谢你的回答,我没想到短路操作员。