重试任务可能毫无意义。例如,如果任务是传感器,并且由于凭据无效而失败,那么以后的任何重试都将不可避免地失败。如何定义可以决定重试是否合理的操作员?
在 Airflow 1.10.6 中,决定是否应重试任务的逻辑位于 中airflow.models.taskinstance.TaskInstance.handle_failure,因此无法在操作员中定义行为,因为这是任务的责任,而不是操作员的责任。
理想的情况是该handle_failure方法是在 Operator 端定义的,这样我们就可以根据需要重新定义它。
我发现的唯一解决方法是使用PythonBranchingOperator“测试”任务是否可以运行。例如,在上述传感器的情况下,检查登录凭据是否有效,然后才将 DAG 流传送到传感器。否则,失败(或分支到另一个任务)。
我的分析正确吗handle_failure?有更好的解决方法吗?