DAG воздушного потока запускается дважды планировщиком. Еженедельный DAG - PullRequest
0 голосов
/ 11 ноября 2019

Воздушный поток DAG запускается дважды в понедельник для следующих конфигураций.

Когда я использую выражение 30 11 * * 1 cron, DAG вообще не срабатывает. Итак, понял, я должен добавить еще один * к выражению. 30 11 * * 1 * - Работает.

default_args:
'start_date': airflow.utils.dates.days_ago(1)

DAG: schedule_interval = 30 11 * * 1 *, ## Это еженедельный запуск в понедельник в 11:30.

Однако DAG запускается 2 раза каждый понедельник. С интервалом в 1 минуту:

  • 11: 30: 05
  • 11: 30: 58

В чем может быть причина?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2019

Анализатор cron, который использует поток воздуха, интерпретирует 6-е место как секунды (как вы можете видеть здесь: https://github.com/kiorky/croniter/blob/master/src/croniter/tests/test_croniter.py#L14).

Я предполагаю, что ваш DAG завершится менее чем за минуту. В следующем цикле планировщика он видит, что расписание cron все еще совпадает (на 58-й секунде), поэтому он снова запускает DAG.

У меня возникла та же проблема, потому что документация Airflow связана с записью в Википедии оКрон, который показал 6 записей. 6 записей не являются стандартными, и существует более одной реализации. В любом случае, для Airflow шестая запись интерпретируется как секунды.

Ваше 5-значное выражение cron должно работать. Может попробовать еще раз? Однако измените идентификатор dag, или вы можете столкнуться со странным поведением: С https://cwiki.apache.org/confluence/display/AIRFLOW/Common+Pitfalls: Changing schedule interval always requires changing the dag_id, because previously run TaskInstances will not align with the new schedule interval

0 голосов
/ 13 ноября 2019

6-значное cron выражение неверно, первое, что вы ввели, правильно. Сколько раз вы запускали DAG? Я предлагаю вам сначала попробовать запустить schedule_interval=@weekly и посмотреть, что получится?

...