Errors
Apache Airflow

Apache Airflow: How to stop/kill Airflow tasks from the UI

Запустил ты даг, а он взял и повис. Задача висит в running, логи молчат, ресурсы жрёт. Тыкнуть в UI хочется на что-то решительное, но что именно?

Запустил ты даг, а он взял и повис. Задача висит в running, логи молчат, ресурсы жрёт. Тыкнуть в UI хочется на что-то решительное, но что именно?

В Airflow UI под каждой задачей есть кнопка Clear. Это не убийство, это скорее “забудь и повтори”. Задача получит статус up_for_retry или failed, воркеру отправится сигнал на остановку, но слушается он не всегда.

Если воркер вежливый (например, в LocalExecutor), он может завершиться. Если задача в бесконечном цикле или игнорирует сигналы — она продолжит висеть.

Что делать с непослушным LocalExecutor

Здесь всё локально, процессы твои. Найди PID и прибей.

Сначала смотришь логи задачи — там обычно есть PID процесса. Если нет, ищи вручную.

ps aux | grep 'airflow task run' | grep твой_dag_id

Нашёл — отправляй SIGTERM (терминал) или сразу SIGKILL (килл).

kill -15 PID  # вежливо
kill -9 PID   # бесповоротно

После этого иди в UI и делай Clear для задачи, чтобы сбросить статус.

А если CeleryExecutor?

Тут сложнее. Задача крутится на воркере где-то в кластере. Кнопка Clear отправит команду воркеру, но это та же история — он может ослушаться.

Нужно лезть на сам ворк-ноду и искать процесс. Или перезагрузить конкретного воркера.

# На машине с воркером
ps aux | grep 'airflow worker' | grep твой_dag_id
kill -9 PID

# Или перезапусти воркера целиком (если используешь systemd)
sudo systemctl restart airflow-worker.service

Ещё вариант — использовать airflow celery команды, но они больше для админов.

airflow celery inspect active  # посмотреть активные задачи

Панель быстрого реагирования

Итоговая схема простая. Зависла задача — тыкаешь Clear в UI. Ждёшь минуту. Не помогло — ищешь и убиваешь процесс вручную на воркере. Для Celery это значит найти нужную ноду.

Если процессы убиваются, а статус в Airflow не сбрасывается — поможет только Clear. Он переведёт задачу в failed, и можно будет запустить заново.

Главное — не паниковать. Остановить можно всё, просто иногда нужно лезть в консоль. Держи под рукой доступ к воркерам и мониторинг процессов, и всё будет под контролем.