Пример DAG застрял в "запущенном" состоянии на неопределенный срок
В моем первом набеге на воздушный поток, я пытаюсь запустить один из примеров DAGS, который поставляется с установкой. Это v.1.8.0. Вот мои шаги:
$ airflow trigger_dag example_bash_operator
[2017-04-19 15:32:38,391] {__init__.py:57} INFO - Using executor SequentialExecutor
[2017-04-19 15:32:38,676] {models.py:167} INFO - Filling up the DagBag from /Users/gbenison/software/kludge/airflow/dags
[2017-04-19 15:32:38,947] {cli.py:185} INFO - Created <DagRun example_bash_operator @ 2017-04-19 15:32:38: manual__2017-04-19T15:32:38, externally triggered: True>
$ airflow dag_state example_bash_operator '2017-04-19 15:32:38'
[2017-04-19 15:33:12,918] {__init__.py:57} INFO - Using executor SequentialExecutor
[2017-04-19 15:33:13,229] {models.py:167} INFO - Filling up the DagBag from /Users/gbenison/software/kludge/airflow/dags
running
Состояние дага остается "бегущим" в течение длительного времени (по крайней мере, 20 минут), хотя из-за быстрого осмотра этой задачи это займет несколько секунд. Как я могу устранить эту проблему? Как я могу увидеть, на каком этапе он застрял?
Ответы
Ответ 1
Для запуска любых групп обеспечения доступности баз данных необходимо убедиться, что запущены два процесса:
-
airflow webserver
-
airflow scheduler
Если у вас работает только airflow webserver
, пользовательский интерфейс покажет, что DAG running
, но если вы щелкнете по DAG, ни одна из задач на самом деле не running
или не scheduled
, а находится в Null
состоянии. Это означает, что они ожидают, чтобы их airflow scheduler
. Если airflow scheduler
не запущен, вы застрянете в этом состоянии навсегда, так как задачи никогда не выбираются для выполнения.
Кроме того, убедитесь, что кнопка переключения в представлении групп DAG переключена на "ON" для конкретной группы DAG. В противном случае он не будет выбран планировщиком, если вы запустите его вручную.
Ответ 2
Я слишком недавно начал использовать Airflow, и мои инструменты продолжали работать бесконечно. Ваш даг может быть установлен на "паузу" без вашего ведома, и, таким образом, планировщик не будет планировать новые экземпляры задач, и когда вы запускаете даг, он просто выглядит так, как будто он работает бесконечно.
Есть несколько решений:
1) В интерфейсе Airflow переключите кнопку слева от метки с "Выкл" на "Вкл". Выкл. Означает, что метка приостановлена, поэтому функция "Вкл" позволит планировщику подобрать ее и завершить метку. (это исправило мою первоначальную проблему)
2) В вашем файле airflow.cfg по умолчанию используется dags_are_paused_at_creation = True. Таким образом, все новые создания, которые вы создаете, приостановлены с самого начала. Измените это на False, и будущие дагы, которые вы создадите, будут хорошими для немедленного использования (мне пришлось перезагрузить веб-сервер и планировщик, чтобы изменения в файле airflow.cfg были распознаны).
3) используйте командную строку $ airflow unpause [dag_id] документация: https://airflow.apache.org/cli.html#unpause
Ответ 3
Ниже работал для меня.
- Убедитесь, что AIRFLOW_HOME установлен
- в AIRFLOW_HOME есть папки dag, плагины. Папки имеют права доступа r, w, x к пользователю воздушного потока.
- Убедитесь, что у вас есть по крайней мере один знак в папке dags/.
- pip install celery [redis] == 4.1.1
Я проверил вышеупомянутый soln на воздушном потоке 1.9.0 версия воздушного потока
Я попробовал ту же самую уловку с версией воздушного потока 1.10, и это работало.