В Apache Airflow может ли быть зависимость от предыдущего выполнения задачи?

#python #airflow

Вопрос:

Допустим A_T , означает Задачу А на сегодня, а A_T-1 означает Задачу А на вчера. Можно ли указать A_T-1 в качестве оператора, чтобы у меня был такой график зависимостей:

 A_T   >> B_T
A_T-1 >> B_T
 

Ответ №1:

Проверьте официальную документацию о зависимостях между DAG. Вот хорошая практика, которой следует следовать:

Когда два DAG имеют отношения зависимости, стоит рассмотреть возможность их объединения в один DAG, который обычно проще для понимания. Воздушный поток также обеспечивает лучшее визуальное представление зависимостей для задач в одном и том же DAG. Однако иногда нецелесообразно помещать все связанные задачи в один и тот же DAG.

Одним из примеров того, что все они не находятся в одном и том же DAG, является следующее (из приведенной выше документации)::

Задача может зависеть от другой задачи в том же DAG, но для другого execution_date .

Я думаю, что это может быть ваш случай, поэтому, если вам это все еще нужно, вы можете использовать аргумент ExternalTaskSensor с аргументом execution_delta . Проверьте здесь все подробности о параметрах этого датчика.

Комментарии:

1. Спасибо за ответ. Я знал о внешнем датчике задач, однако я не хочу, чтобы dep выполнял задачу из другого DAG. Я хочу, чтобы dep выполнял задачу из той же DAG, но с предыдущим запуском DAG. Возможно ли это также с помощью внешнего датчика задач?

2. Да, насколько я понимаю из документов, вы просто используете то же dag_id самое и task_id , и вы ДОЛЖНЫ добавить execution_delta аргумент.

3. потрясающе, спасибо тебе. Сейчас я пойду, почитаю документы повнимательнее. Незнание того, содержится ли решение в документах, затрудняет его усвоение.

4. Не за что! Обычно документы трудно усваиваются 🙂