Какую start_date следует использовать для DAG, запускаемого вручную?

Многие из дагов с примерами воздушного потока, для которых schedule_interval=None задано динамическое начало дата, например airflow.utils.dates.days_ago(2) или _ 3_. Однако docs рекомендуют против динамической даты начала:

Мы не рекомендуем использовать динамические значения в качестве start_date, особенно datetime.now (), поскольку это может сбивать с толку. Задача запускается после закрытия периода, и теоретически @hourly DAG никогда не дойдет до часа после того, как now () продвигается вперед.

Не имеет значения дата начала для дагов, запускаемых вручную? Какая здесь лучшая практика?


person rcorre    schedule 07.06.2018    source источник
comment
Я не уверен, что понимаю, в чем проблема, с которой вы столкнулись. Можете ли вы добавить больше контекста к своему вопросу о том, чего вы пытаетесь достичь, например, если динамический start_date вам не подходит? Описанный вами подход кажется мне подходящим, поскольку start_date не слишком важен для DAG, который запускается только извне. Это хороший вопрос, потому что я не думаю, что текущая документация явно разъясняет этот вариант использования.   -  person Taylor Edmiston    schedule 07.06.2018
comment
@TaylorEdmiston нет наблюдаемой проблемы, просто конфликт между документами и примерами, который заставляет меня чувствовать себя неуверенно как пользователь. В руководстве много говорится о start_date, поэтому я не был уверен, что это действительно не имеет значения.   -  person rcorre    schedule 07.06.2018


Ответы (3)


Я всегда стараюсь установить дату начала для DAGS, запускаемого вручную, как день, когда я впервые запустил его, чтобы я знал, когда DAG будет впервые запущен для справки в будущем.

person Zack    schedule 07.06.2018

Если у вас schedule_interval=None, я считаю, что start_date не имеет значения, поскольку воздушный поток не будет пытаться выполнить обратное заполнение. Просто установите любое значение, даже если оно динамическое, это не должно вызывать никаких проблем.

person Simon D    schedule 07.06.2018
comment
Я бы не рекомендовал это. Даже для DAG, запускаемых вручную, вы можете захотеть выполнить обратное заполнение вручную, например с помощью команды airflow backflow. Если динамическая дата начала позже выбранной даты засыпки, это заблокирует ваши задачи. - person Andy Carlson; 25.04.2019
comment
Я не совсем понимаю, почему вы хотите вручную запускать обратную засыпку для группы DAG, для которой не задан интервал, но это нормально. И да, вам, очевидно, нужно быть уверенным, что дата начала уже в прошлом, даже если она динамическая. - person Simon D; 26.04.2019
comment
Мы делаем это, когда нам нужно, чтобы execution_date остался в прошлом. - person Andy Carlson; 26.04.2019
comment
когда вы вручную запускаете даг с помощью trigger_dag, вы можете указать дату выполнения там. - person Simon D; 26.04.2019

В итоге я просто установил start_date на 1970, 1 января (абсурдно далеко в прошлом), чтобы Airflow никогда не жаловался на то, что дата выполнения предшествует дате начала.

person Andy Carlson    schedule 25.04.2019