개요
일반적으로 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