Условное планирование воздушного потока - PullRequest
0 голосов
/ 25 марта 2020

У меня есть две группы доступности базы данных с разными расписаниями для Airflow, DAG1 создает таблицу в Redshift каждый час, DAG2 - это процесс, который выполняется ежедневно и должен прочитать таблицу, созданную DAG1. Я сталкиваюсь с проблемой, когда если DAG2 занимает больше времени, чем обычно, тогда DAG1 начинает работать, давая мне одновременные проблемы с подключением в Redshift.

Есть ли способ настроить датчик в DAG1, чтобы проверить, DAG2 запущен, и в этом случае дождаться его завершения sh, прежде чем продолжить?

Я попытался использовать ExternalTaskSensor, но он только проверяет, был ли последний запуск группы обеспечения доступности баз данных успешным, а не - работает ли эта группа. Или я не прав?

Есть ли способ получить статус DAG и использовать его для переназначения другого DAG?

1 Ответ

0 голосов
/ 25 марта 2020

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

Следующая настройка заставляет вашу задачу повторяться каждые 10 минут, 6 раз, поэтому, если ваша почасовая работа (DAG1) не занимает больше, чем приблизительно один час, это должно работать просто отлично.
Добавить это для вашего DAG2 в разделе default_args:

default_args = {
    ...
    # Your default_args
    ...
    'retries': 6,
    'retry_delay': timedelta(minutes=10)
}  

Будьте осторожны, чтобы не записывать эти свойства дважды, если retries или retry_delay уже существует в DAG2, переопределите их.

...