Как предотвратить воздушный поток от засыпания?
Скажем, у вас есть DAG воздушного потока, который не имеет смысла для обратной засыпки, а это означает, что после того, как он запускается один раз, запуск его в последующие времена будет совершенно бессмысленным.
Например, если вы загружаете данные из какого-то источника, который ежечасно обновляется только в вашей базе данных, засыпка, которая происходит в быстрой последовательности, будет просто импортировать одни и те же данные снова и снова.
Это особенно раздражает, когда вы создаете новую часовую задачу, и она запускает N
количество раз за каждый пропущенный час, делая избыточную работу, прежде чем она начнет работать в указанном вами интервале.
Единственное решение, о котором я могу думать, это то, о чем они конкретно советовали в FAQ по документам
Мы не рекомендуем использовать динамические значения как start_date, особенно datetime.now()
поскольку это может быть довольно запутанным.
Есть ли способ отключить повторное заполнение для DAG, или я должен сделать это выше?
Ответы
Ответ 1
Обновите версию воздушного потока версии 1.8 и используйте catchup_by_default = False в airflow.cfg или примените catchup = False к каждому из ваших задержек.
https://github.com/apache/incubator-airflow/blob/master/UPDATING.md#catchup_by_default
Ответ 2
Это, по-видимому, нерешенная проблема Airflow. Я знаю, что мне очень хотелось бы иметь точно такую же особенность. Вот, насколько я получил; он может быть полезен другим.
Это функции пользовательского интерфейса (по крайней мере, в 1.7.1.3), которые могут помочь в решении этой проблемы. Если вы перейдете в представление "Дерево" и выберите конкретную задачу (квадратные квадратики), появится диалоговая кнопка с кнопкой "Успех знака". Нажав "минус", нажмите "отметить успех", и все экземпляры этой задачи в DAG будут отмечены как успешные, и они не будут запущены. Верхний уровень DAG (круги сверху) также может быть помечен как успешный аналогичным образом, но, похоже, не существует способа обозначить несколько экземпляров DAG.
Я еще недостаточно изучил его, но может быть возможно использовать подкоманду 'trigger_dag' для обозначения состояний DAG. см. здесь: https://github.com/apache/incubator-airflow/pull/644/commits/4d30d4d79f1a18b071b585500474248e5f46d67d
Функция CLI для маркировки DAG находится в работе:
http://mail-archives.apache.org/mod_mbox/airflow-commits/201606.mbox/%[email protected]%3E
https://github.com/apache/incubator-airflow/pull/1590
ОБНОВЛЕНИЕ (9/28/2016):
Добавлен новый оператор "LatestOnlyOperator" (https://github.com/apache/incubator-airflow/pull/1752), который будет запускать только последнюю версию последующих задач. Звучит очень полезно и, надеюсь, скоро выйдет в релиз.
ОБНОВЛЕНИЕ 2: От воздушного потока 1.8 освобожден LatestOnlyOperator
.