Apache Airflow

[Airflow] celery control - Celery Worker 원격 제어

비번변경 2023. 9. 12. 22:37

개요

일반적으로 Airflow Celery Worker는 워커 프로세스를 실행한 서버에서 제어할 수 있다. 하지만 필요에 따라 원격으로 제어해야 하는 경우가 생기는데, 이런 경우에는 Celery CLI를 이용할 수 있다.

 

 

celery control

celery CLI 중 control 명령은 worker를 원격 제어하는 기능을 제공한다. Celery Worker 가이드에서 확인할 수 있는 명령 대부분은 control 명령을 통해 원격으로 제어할 수 있는 것 같다.

celery control [OPTIONS] {revoke|revoke_by_stamped_headers|terminate|rate_limit|
                          time_limit|election|enable_events|disable_events|heartbeat|
                          pool_grow|pool_shrink|pool_restart|autoscale|shutdown|
                          add_consumer|cancel_consumer}

 

예로 들어 Airflow Celery Worker 서비스를 원격으로 중지한다고 하자. 이를 위해서는 아래처럼 사용하면 된다.

celery -A airflow.executors.celery_executor -b $BROKER_URL \
	control -d celery@10.5.10.4 -t 30 shutdown

아래 두 옵션은 celery 명령어를 사용할 때 지정할 수 있는 옵션이다.

  • -A, --app : Celery App 이름. airflow.cfg 등의 Airflow 설정에서 celery.celery_app_name에 해당하는 값을 지정한다.
  • -b, --broker : Redis나 RabbitMQ 등 사용 중인 Broker_url. Airflow 설정에서 celery.broker_url에 해당하는 값을 지정한다.

 

아래 두 옵션은 celery control 명령을 사용할 때 지정하는 옵션이다.

  • -d, --destination : 제어할 Celery Worker 노드.
  • -t, --timeout : 응답을 대기할 시간 지정. (초 단위)

 

 

참고 문서

https://docs.celeryq.dev/en/stable/reference/cli.html#celery-control