想问一个气流问题,目前当我们设置 DAG 默认参数重试 5 次时 如果发生故障
default_args = {
'owner': 'testing',
'retries': 5,
'retry_delay': timedelta(minutes=1)
}
所以现在发生的情况是,如果 DAG 上的任何任务失败,它将重试这些任务。想知道是否有任何方法可以设置如果任何一个任务失败则重新启动整个 DAG ?
测试DAG
任务1 --> 任务2 --> 任务3 --> 任务4
例如,如果任务 3 发生故障,我希望它再次从任务 1 开始。这可能吗??
谢谢你
理论上,当任务失败时,你可以使用fail_stop来使整个dag失败。然后使用 on_failure_callback 并从那里以编程方式调用 dag。 您必须自己管理重试,否则您将面临无限重新运行的风险。
但我建议不要这样做。 Airflow 的强大功能之一是您可以从失败的地方重新运行管道并节省时间和资源。重试是内置的,您不需要自己实现。 我鼓励你重新考虑你的 dag 的设计,并考虑以一种你不必这样做的方式重新设计它。在我们团队中的每一个案例中,我们都能够做到这一点。