Как перезапустить Celery Worker в Airflow

В настоящее время я сталкиваюсь с проблемой, когда мой рабочий Celery время от времени зависает и его необходимо перезапустить. У меня есть экземпляр Airflow, из которого я хотел бы настроить и запланировать перезапуск с помощью BashOperator или SSHOperator, но я не уверен, как действовать, поскольку он находится в контейнере Docker.

С локального хоста я бы просто «докер перезапустил рабочий», но, поскольку Bash работает внутри контейнера воздушного потока, мне нужно найти способ перезапустить через CLI воздушного потока или SSH из контейнера на хост, что звучит ужасно. Есть ли элегантный способ приблизиться к этому?

EDIT: я вижу, что у Flower есть REST API, из которого я могу перезапустить пул, но я должен включить это в моей конфигурации сельдерея. Похоже, что airflow устанавливает конфигурацию уже, есть ли способ переопределить это?


person Anthony Lee    schedule 26.06.2017    source источник


Ответы (1)


Хорошо, вот что я в итоге сделал:

t1 = BashOperator(
    task_id="celery_restart",
    bash_command="celery multi restart 1",
    dag=dag
)

На самом деле не мешает моим задачам зависать, но это так :).

person Anthony Lee    schedule 27.06.2017