Apache Airflow/삽질

[Airflow] Celery worker의 queue 삭제 시 프로세스 종료 여부

비번변경 2023. 9. 5. 15:22

개요

서비스 운영을 하다 보면 예기치 않은 이유로 프로세스가 종료되는 경우가 있다. 그럴 때를 대비해서 프로세스의 실행 상태를 확인하고, 실행 상태가 아니면 프로세스를 시작하도록 동작하는 스크립트를 crontab에 등록해 두는데, 한 가지 확인해 볼 게 생겼다.

Celery worker를 관리하고 모니터링할 수 있는 Airflow Celery Flower를 이용하면 Worker의 Task Queue를 삭제하거나 추가할 수 있다. 이 때 Worker의 Task Queue를 삭제하면 worker 프로세스가 종료되지는 않을까? 직접 실험해봤다.

 

 

실험 방법

1. Celery Flower Web UI 접속

Task Queue를 삭제할 Worker 서버를 선택한다.

 

2. Queues 탭으로 이동

 

3. 비활성화할 Queue의 Cancel Consumer 버튼 클릭

 

4. Task Queue를 삭제한 서버에서 Worker 프로세스를 모니터링한다.

 

 

결론

5분 ~ 10분 이상 지나고 확인해 본 결과, Flower로 Worker의 Task Queue를 삭제해도 Worker 프로세스는 종료되지 않는다.

실제로 서버 내 프로세스는 계속 worker를 실행했던 명령어로 유지되고 있었다.

airflow celery worker -q <TASK_QUEUE>

또, Worker의 Task Queue를 삭제한다고 해서 Flower에서 Worker가 오프라인 상태로 전환되지도 않았다.

 

 

참고 문서

2022.12.09 - [Airflow] CeleryExecutor - Worker 종료