使用ONE_FAILED的气流trigger_rule导致dag失败

时间:2018-06-21 03:00:07

标签: airflow

我要实现的任务是创建一个任务,如果dag下的任何一个任务失败,该任务将发送通知。我将触发规则应用于以下任务:

batch11 = BashOperator(
task_id='Error_Buzz',
trigger_rule=TriggerRule.ONE_FAILED,
bash_command='python /home/admin/pythonwork/home/codes/notifications/dagLevel_Notification.py') ,
dag=dag,
catchup = False
)

batch>>batch11
batch1>>batch11

现在的问题是,当没有其他任务失败时,由于trigger_rule(我想要的),batch11任务将不会执行,但是由于dag的默认trigger_rule为ALL_SUCCESS,这将导致dag失败。有没有办法结束循环孔以使dag成功运行?

结果截屏: outcome

1 个答案:

答案 0 :(得分:1)

我们在气流部署中做类似的事情。这个想法是在dag中的任务失败时通知松弛。您可以按照记录https://airflow.apache.org/code.html#airflow.models.BaseOperator

设置dag级配置In [15]: data = [('about', 'IN'),('above', 'JJ'),('account', 'NN'),('address', 'NN'),('after', 'IN')] In [16]: df = pd.DataFrame(data, columns=['Word', 'POS']) In [17]: df Out[17]: Word POS 0 about IN 1 above JJ 2 account NN 3 address NN 4 after IN
  

on_failure_callback(可调用)–任务执行时要调用的函数   该任务的实例失败。上下文字典作为   此功能的单个参数。上下文包含对   与任务实例相关的对象,并记录在   API的“宏”部分。

这是我如何使用它的一个示例。如果任何任务失败或成功,气流调用通知功能,我可以在任何需要的地方获得通知。

on_failure_callback