Запуск внешнего тега с помощью другого тега в Airflow

Имея список задач, которые вызывают разные даги в главном даге. Я использую для этого TriggerDagrunoperator. Но столкнулся с несколькими проблемами.

  • TriggerDagrunoperator не дожидается завершения внешнего dag, он запускает следующую задачу. Я хочу, чтобы дождался завершения, и следующая задача должна запускаться в зависимости от статуса. Наткнулся на ExternalTaskSensor. Это усложняет процесс. Есть ли другое решение, чтобы исправить это?

  • Если я снова активирую мастер-метку, я хочу, чтобы задача перезапустилась с того места, где произошла ошибка. Прямо сейчас это не перезапуск, но для расписания, основанного на времени, он будет.


person Raja    schedule 08.07.2019    source источник


Ответы (1)


.. хочу чтоб дождался завершения .. наткнулся на ExternalTaskSensor. Это усложняет процесс ..

Я не знаю другого способа добиться этого. Я сам сделал это таким же образом.


Если я снова активирую мастер-метку, я хочу, чтобы задача перезапустилась с того места, где она не удалась ...

Это ваше требование противоречит принципу идемпотентности. что Airflow требует. Я бы посоветовал вам попробовать переделать свои рабочие места, включив идемпотентность (например, в случае повторных попыток у вас должна быть идемпотентность). А пока вы можете черпать вдохновение у некоторых людей и попытаться добиться чего-то похожего (но это будет довольно сложно)

person y2k-shubham    schedule 11.07.2019
comment
Я реализовал ExternalTaskSensor. Спасибо - person Raja; 15.07.2019
comment
Мастер даг запускает список дагов. Между дочерними тегами устанавливается зависимость. Например, если в промежутке произошел сбой какого-либо дага, я хочу начать с неудачного. Не хочу начинать с начального ребенка. Таким образом мы можем сэкономить время обработки ETL. Есть ли другие способы сделать это? Спасибо - person Raja; 15.07.2019
comment
Это то, что я реализовал. В Master Dag одна задача (triggerdagrunoperator) запускает дочерний dag, а другая задача (externaltasksensor) будет ждать завершения дочернего dag. Любые способы ткнуть дб через х минут. Почему потому что, если детский кинжал завершается за 15 мин. Не хочу тыкать начиная с 0-й минуты. Я предполагаю, что займёт ресурсы пока ковыряется. Вместо этого он должен подождать некоторого минимального порогового времени (скажем, 10 минут), после чего должно произойти тряска. - person Raja; 15.07.2019