Воздушный поток Почему планировщик не запускает мой DAG? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть следующий Dag: enter image description here

Первый Даг с 0 1 * * * работал без проблем. Конец DAG 0 10 1 * * Не бежал. Когда я делаю:

import datetime
print datetime.datetime.now()

Я получаю:

2018-07-01 12:14:15.632812

Так что я не понимаю, почему этот DAG не был запланирован. Я понимаю, что не обязательно запускать точно в 10:00, но статистика должна быть Running.

Согласно «Последнему запуску» первой задачи с 2018-06-30 01:00 Я подозреваю, что я на самом деле не понимаю часы Airflow. С моей точки зрения, последний прогон был 2018-07-01 01:00, потому что он пробежал сегодня утром, а не вчера.

Edit: Я видел этот абзац в документации :

"Обратите внимание, что если вы запустите группу обеспечения доступности баз данных с параметром schedule_interval, равным одному дню, запуск с отметкой 2016-01-01 будет запущен вскоре после 2016-01-01T23: 59. Другими словами, экземпляр задания запускается, как только период, который он охватывает, закончился. "

Так что мне интересно .. Я должен запланировать все на один день раньше фактической даты, которую я хочу? Так что, если я действительно хочу, чтобы что-то работало на 0 10 1 * *, я должен запланировать это на 0 10 30 * *? Другими словами, если я хочу, чтобы что-то запускалось 1-го числа каждого месяца в 10:00, я должен запланировать это на последний день каждого месяца в 10:00?

Где в этом логика? Это очень трудно понять и следовать.

Становится хуже, согласно this Нет способа сообщить планировщику этот вход. Что мне делать?!

1 Ответ

0 голосов
/ 01 июля 2018

Airflow планирует задачи для запуска с END интервала расписания. Это может показаться немного противоречивым, но основано на идее, что данные за определенный интервал недоступны, пока этот интервал не закончится.

Предположим, у вас был рабочий процесс, который должен запускаться каждый день. Вы не можете получить все данные за вчера, пока этот день не закончится (сегодня).

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

Если вы хотите, чтобы ваша группа обеспечения доступности баз данных запускалась 1-го числа каждого месяца, то изменение расписания не является плохой идеей. Однако если вы хотите, чтобы ваша группа обеспечения доступности баз данных работала с данными, связанными с 1-го числа каждого месяца (то есть передавала эту дату в запрос API или запрос SQL), то вы правы.

...