我要实现的任务是创建一个任务,如果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成功运行?
答案 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