Могу ли я иметь задачи под одним DAG с разными датами запуска в Airflow? - PullRequest
1 голос
/ 25 марта 2019

У меня есть группа обеспечения доступности баз данных, которая выполняет две задачи: A и B.

Вместо указания start_date на уровне DAG, я добавила его в качестве атрибута для операторов (яиспользуя PythonOperator в данном случае) и удалил его из словаря DAG.Обе задачи выполняются ежедневно.

start_date для A - 2013-01-01, а start_date для B - 2015-01-01.Моя проблема заключается в том, что Airflow выполняется в течение 16 дней для задач A (потому что я думаю, что в моем airflow.cfg я оставил значение по умолчанию dag_concurrency = 16) от 2013-01-01, и после этого он останавливается.Группы доступности баз данных находятся в состоянии running, а задачи для B находятся в состоянии с no status.

Очевидно, что я делаю что-то не так, и я могу просто установить start_date на уровне DAG и иметь B запускается из start_date из A, но это не то, что я хочу сделать.

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

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

ОБНОВЛЕНИЕ:

Я знаю, что можно добавить ShortCircuitOperator, но, похоже, это работаеттолько для потока задач, которые являются зависимыми и есть нисходящий поток.В моем случае A не зависит от B.

1 Ответ

1 голос
/ 25 марта 2019

Используйте BranchPythonOperator и отметьте в этой задаче, что ваша execute_date > = '2015-01-01' или нет. Если true, он должен выполнить Задача B , если нет - выполнить Задачу-пустышку.

enter image description here

Однако я бы рекомендовал использовать отдельный DAG.

Документация по ветвлению: https://airflow.readthedocs.io/en/1.10.2/concepts.html#branching

...