Ошибка на task1
вызывает оба обработчика ошибок, поскольку task2
находится ниже task1
, что делает task1
родителем задачи task2
.
Если ваше правило триггера равно ONE_FAILED
для task1
и task2
, это вызывает проблемы, поскольку определение ONE_FAILED
:
срабатывает, как толькотак как хотя бы один из родителей потерпел неудачу, он не ждет, пока все родители будут выполнены
Таким образом, с учетом сказанного, вы хотите, чтобы task1_error_handler
срабатывал только в случае сбоя task1
.К сожалению, это невозможно сделать, просто изменив правило триггера, поскольку вы не можете напрямую связать условную задачу, как вы хотите в данный момент.
Ваши лучшие ставки будут такими:
- Оставьте задачу 1 такой, как есть, и избавьтесь от правила триггера
task2
для обработчика ошибок и вместо этого используйте on_failure_callback
для вызова ошибки.обработчик. - Разделить задачу 2 на отдельный DAG.