Я работаю в команде, которая использует одного из крупных облачных провайдеров для размещения того, что мы делаем. Каждое утро, прежде чем я приступаю к работе, у меня есть запланированная работа, которая поддерживает среду разработки в этом облаке, и каждый вечер у меня есть запланированная работа, которая снова рушит все это. Эта среда разработки включает в себя экземпляр Apache Airflow и еще одна вещь, которую выполняет задание, - запуск группы DAG Airflow, содержащей одну задачу. У меня периодически возникает проблема с этой группой обеспечения доступности баз данных, она будет работать, но иногда не удается запланировать экземпляр этой задачи. Это произошло сегодня утром, вот подробности экземпляра задачи:
В этом случае:
- планировщик работает и определенно не находится под большой нагрузкой ( больше ничего не работает)
- насколько я знаю, он еще не работал
У меня есть простой способ исправить это, я go и перезапустить планировщик воздушного потока (который, поскольку мы настроили поток воздуха для запуска в качестве службы linux, включает в себя s sh 'на ВМ, на которой у нас установлен поток воздуха, и выдачу systemctl restart airflow-scheduler
). Сразу после этого экземпляр задачи начнет выполняться.
Как я уже говорил, эта проблема нерегулярна, то есть я не могу определить причину root, иногда по утрам все работает нормально, иногда застревает вот так. Сегодня утром он застрял.
Я прочитал Почему моя задача не запланирована? и одна вещь, которая привлекла мое внимание, была:
Ваша начальная дата установить правильно? Планировщик воздушного потока запускает задачу вскоре после того, как start_date + schedule_interval пройден.
Я только что посмотрел на задачу, и ее start_date
равно None
:
![enter image description here](https://i.stack.imgur.com/vncyj.png)
schedule_interval
DAG - None
, потому что мы не планируем этот DAG, мы запускаем его вручную (что делает моя утренняя работа):
![enter image description here](https://i.stack.imgur.com/RzBGR.png)
Итак, задача не имеет start_date
, а schedule_interval
DAG равен None
, что объясняет, почему он не выполняется, но не Не могу объяснить, почему в некоторые дни он запускается, а в некоторых - нет.
Я только что перешел и перезапустил службу планировщика (как описано выше), и задача теперь выполняется. Взглянув на детали экземпляра задачи снова, он теперь получил start_date
:
![enter image description here](https://i.stack.imgur.com/9nqap.png)
Мне не ясно, почему перезапуск Планировщик заставляет экземпляр задачи запускаться. Кто-нибудь может подсказать, в чем может быть причина? Я признаю, что не очень хорошо понимаю start_date
.
ОБНОВЛЕНИЕ 2020-04-21: Коллега обратил мое внимание на ошибку, которая звучит похоже (хотя может и не совпадать): AIRFLOW-1641 - Задание застревает в очереди . Эта проблема была исправлена в воздушном потоке 1.9, в настоящее время мы используем воздушный поток 1.8.1, но скоро обновимся до воздушного потока 1.10.