Пример 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

Ниже работал для меня.

  1. Убедитесь, что AIRFLOW_HOME установлен
  2. в AIRFLOW_HOME есть папки dag, плагины. Папки имеют права доступа r, w, x к пользователю воздушного потока.
  3. Убедитесь, что у вас есть по крайней мере один знак в папке dags/.
  4. pip install celery [redis] == 4.1.1

Я проверил вышеупомянутый soln на воздушном потоке 1.9.0 версия воздушного потока

Я попробовал ту же самую уловку с версией воздушного потока 1.10, и это работало.