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, и можно будет запустить заново.
Главное — не паниковать. Остановить можно всё, просто иногда нужно лезть в консоль. Держи под рукой доступ к воркерам и мониторинг процессов, и всё будет под контролем.