气流:仅当任务返回特定退出代码时才在DAG中重试任务

时间:2018-05-22 15:31:43

标签: airflow airflow-scheduler

我有一个运行多个BashOperator任务的气流DAG。这些任务又调用API,在EMR集群上提交作业。 API根据EMR作业是成功(0),失败(1)还是超时(124)返回不同的退出代码。只有超时的任务才能通过气流重试。

是否可以在错误上设置回调函数,捕获退出代码并重新触发任务?如果没有,那么这可以通过我错过的一些现有功能来处理吗?

==编辑1 == 有人挖了气流源并发现了这个:

if sp.returncode: raise AirflowException("Bash command failed") 这表示除非退出代码为0,否则气流会将所有其他退出代码的任务标记为失败。基本上,对于0以外的任何退出代码,气流将根据配置的重试值重试该任务。

另外,如果我在回调on_error中添加逻辑以基于error_code重试,我将无法控制重试任务的次数。

0 个答案:

没有答案