Я не могу понять, как работает планировщик, я создал несколько дагов с помощью:
schedule_interval = "0 21 * * *",
start_date=pendulum.datetime(2022, 5, 3, tz = "UTC"),
catchup=False,
"max_active_runs": 1,
Я активировал даг вчера днем около 15:00 и вручную запустил даги, чтобы убедиться, что они работают.
Сегодня утром я проверил выполнение дага и увидел, что вчера (2022-05-03 в 21.00) даги не были выполнены, как ожидалось (это дата следующего запуска, о которой сообщает airflow) почему?
В чем я ошибаюсь?
Я использую воздушный поток 2.2.4
Спасибо
Ручной запуск начинается, как только вы запускаете его. Запланированные запуски зависят от механизма планирования Airflow. Я объяснил это в Проблема с датой начала и запланированной датой в Apache Airflow
В вашем случае дата начала 2022-05-03
с интервалом 0 21 * * *
означает, что первый запуск начнется 2022-05-04 21:00
. execution_date
этого пробега будет 2022-05-03 21:00
.
Итак, если вы хотите, чтобы первый запуск начался 2022-05-03 21:00
, вам нужно установить:
start_date=pendulum.datetime(2022, 5, 2, tz = "UTC"),
schedule_interval = "0 21 * * *",
В качестве альтернативы, если вы хотите указать точное время выполнения, вам нужно будет использовать Расписания, тогда вы можете настроить планирование DAG с помощью расписаний.
Вы путаете, когда выполняется DAG, с каким интервалом данных вы обрабатываете. Я не знаю, что делает ваша DAG, но вы можете получить любую ссылку на дату, которая вам нужна для фактической работы DAG, если вы будете использовать макросы airflow.apache.org/docs/apache-airflow/stable/…
Да, у меня много путаницы и чтения документации, которую я не могу понять до сих пор, я хочу запланировать даг как crontab с логической датой, равной времени, когда даг запускается планировщиком, это моя цель.
Но Airflow — это не crontab... Логика планирования такова, как я объяснил. Вы не можете изменить это.
Итак, сегодня 2022-05-04, я хочу, чтобы сегодняшнее объявление 21.00 выполнялось с текущей датой, которую я должен установить: start_date=pendulum.datetime(2022, 5, 4, tz = "UTC") ? Это правильно?