Воздушный поток - тайм-аут задачи, не убивая DAG - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу установить определенное время ожидания для моего BashOperator, используя execution_timeout, но я заметил, что оно увеличивает AirflowTaskTimeout.

То, что я ищу, - это выполнить определенное поведение в случае тайм-аута, а затем продолжить DAG из следующей задачи. Я мог бы использовать bash timeout, но я ищу внутреннюю поддержку Airflow для той же функциональности.

Поддерживает ли Airflow это?

1 Ответ

0 голосов
/ 05 апреля 2019

Воздушный поток имеет концепцию Правила запуска . Вы можете передать trigger_rule=one_failed или trigger_rule=all_done следующему заданию. Вы можете иметь 2 задачи, которые напрямую зависят от первой задачи.

Например:

task_a >> task_b (trigger_rule='all_success') >> task_d (trigger_rule='one_success')
task_a >> task_c (trigger_rule='all_failed') >> task_d (trigger_rule='one_success')

Из документов:

Все операторы имеют аргумент trigger_rule, который определяет правило, по которому сгенерированная задача запускается. Значение по умолчанию для trigger_rule равно all_success и может быть определено как «запускать эту задачу, когда все задачи прямого потока успешно выполнены». Все остальные правила, описанные здесь, основаны на прямых родительских задачах и являются значениями, которые могут быть переданы любому оператору при создании задач:

  • all_success: (по умолчанию) все родители преуспели
  • all_failed: все родители находятся в состоянии сбоя или ошибки upstream_failed
  • all_done: все родители закончили казнь
  • one_failed: срабатывает, как только один из родителей вышел из строя, не дожидается завершения работы всех родителей
  • one_success: срабатывает, как только хотя бы один родитель преуспевает, он не ждет, пока все родители закончатся
  • none_failed: все родители не потерпели неудачу (отказ или upstream_failed), т.е. все родители преуспели или были пропущены
  • dummy: зависимости только для показа, запуск по желанию
...