Почему мое задание воздушного потока не запланировано? - PullRequest
2 голосов
/ 17 апреля 2020

Я работаю в команде, которая использует одного из крупных облачных провайдеров для размещения того, что мы делаем. Каждое утро, прежде чем я приступаю к работе, у меня есть запланированная работа, которая поддерживает среду разработки в этом облаке, и каждый вечер у меня есть запланированная работа, которая снова рушит все это. Эта среда разработки включает в себя экземпляр Apache Airflow и еще одна вещь, которую выполняет задание, - запуск группы DAG Airflow, содержащей одну задачу. У меня периодически возникает проблема с этой группой обеспечения доступности баз данных, она будет работать, но иногда не удается запланировать экземпляр этой задачи. Это произошло сегодня утром, вот подробности экземпляра задачи:
enter image description here В этом случае:

  • планировщик работает и определенно не находится под большой нагрузкой ( больше ничего не работает)
  • насколько я знаю, он еще не работал

У меня есть простой способ исправить это, я go и перезапустить планировщик воздушного потока (который, поскольку мы настроили поток воздуха для запуска в качестве службы linux, включает в себя s sh 'на ВМ, на которой у нас установлен поток воздуха, и выдачу systemctl restart airflow-scheduler). Сразу после этого экземпляр задачи начнет выполняться.

Как я уже говорил, эта проблема нерегулярна, то есть я не могу определить причину root, иногда по утрам все работает нормально, иногда застревает вот так. Сегодня утром он застрял.

Я прочитал Почему моя задача не запланирована? и одна вещь, которая привлекла мое внимание, была:

Ваша начальная дата установить правильно? Планировщик воздушного потока запускает задачу вскоре после того, как start_date + schedule_interval пройден.

Я только что посмотрел на задачу, и ее start_date равно None:
enter image description here

schedule_interval DAG - None, потому что мы не планируем этот DAG, мы запускаем его вручную (что делает моя утренняя работа):
enter image description here

Итак, задача не имеет start_date, а schedule_interval DAG равен None, что объясняет, почему он не выполняется, но не Не могу объяснить, почему в некоторые дни он запускается, а в некоторых - нет.

Я только что перешел и перезапустил службу планировщика (как описано выше), и задача теперь выполняется. Взглянув на детали экземпляра задачи снова, он теперь получил start_date:

enter image description here

Мне не ясно, почему перезапуск Планировщик заставляет экземпляр задачи запускаться. Кто-нибудь может подсказать, в чем может быть причина? Я признаю, что не очень хорошо понимаю start_date.

ОБНОВЛЕНИЕ 2020-04-21: Коллега обратил мое внимание на ошибку, которая звучит похоже (хотя может и не совпадать): AIRFLOW-1641 - Задание застревает в очереди . Эта проблема была исправлена ​​в воздушном потоке 1.9, в настоящее время мы используем воздушный поток 1.8.1, но скоро обновимся до воздушного потока 1.10.

1 Ответ

1 голос
/ 19 апреля 2020

Вы правы, перезапуск планировщика не должен изменять дату начала dag. Мне интересно, есть ли у вас небольшая ошибка логики c в вашей работе, которая изначально создает экземпляр воздушного потока и dag. Похоже, что все будет работать нормально, если у вашего даг будет начальная дата. Поэтому вам не нужно вдаваться в подробности, почему перезапуск планировщика заставляет его работать.

...