Airflow возвращает Backfill, выполненный без выполнения задач

Я запускаю Airflow и пытаюсь повторить какую-то задачу, которую мы создаем, из командной строки.

При запуске веб-сервера воздушного потока все работает как положено. Но когда я запускаю airflow backfill dag task '2017-08-12', воздушный поток возвращается:

[2017-08-15 02:52:55,639] {__init__.py:57} INFO - Using executor LocalExecutor
[2017-08-15 02:52:56,144] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow/dags
2017-08-15 02:52:59,055 - airflow.jobs.BackfillJob - INFO - Backfill done. Exiting

... и на самом деле не управляет дагом.

При использовании airflow test или airflow run (т. е. команд, включающих выполнение задачи, а не dag) он работает так, как ожидалось.

Я делаю основную ошибку? Что я могу сделать для отладки отсюда?

Спасибо


person Maximilian    schedule 15.08.2017    source источник


Ответы (3)


Вы уже запускали эти DAG в этот диапазон дат? Вам потребуется сначала clear DAG, а затем backfill. Основываясь на том, что Максим упомянул здесь: https://groups.google.com/forum/#!topic/airbnb_airflow/gMY-sc0QVh0

person Chengzhi    schedule 15.08.2017

Если задача имеет расписание @monthly, то если вы попытаетесь запустить ее с start_date серединой месяца, в ней будет просто указано Backfill done. Exiting.. Если задача имеет расписание '30 5 * * *', это также предотвращает backfill из командной строки.

(Обновлено, чтобы отразить более точную информацию и это обсуждение)

person Maximilian    schedule 15.08.2017
comment
Я только что узнал, что команда диапазона обратной засыпки не работает, если у дага есть schedule_interval=None. Он работает только в течение первого дня диапазона. - person Ena; 13.06.2018

Две возможные причины:

  • Дата выполнения, указанная с помощью параметра -e, не входит в диапазон [start_date, end_date) группы обеспечения доступности баз данных.
  • Даже если дата выполнения находится между датами, имейте в виду, что если ваша DAG имеет schedule_interval=None, то она не будет итеративно backfill: она будет выполняться только для одной даты (указанной как --start_date или --end_date, если первая опущена).
person Anton Bryzgalov    schedule 21.02.2020