Развертывание с нулевым временем простоя с помощью Airflow

Моя команда использует Airflow для планирования заданий ETL. Прямо сейчас мы на LocalExecutor. Мы также занимаемся непрерывной интеграцией.

Прямо сейчас, когда мы отправляем определенные типы изменений (например, добавляем нового оператора), мы должны перезапустить планировщик воздушного потока prod, чтобы изменения были приняты. Когда мы перезапускаем планировщик, все активно выполняющиеся задачи прекращаются, и их приходится перезапускать, что является огромной болью.

Я пытаюсь понять, как избежать перезапуска планировщика или предотвратить прерывание запущенных задач из-за перезапуска планировщика. Я прочитал несколько статей по этой теме, например эту, но ни один из них не использует LocalExecutor.

Будет ли для этого необходимо обновление до Celery в качестве исполнителя или есть способ сделать это на LocalExecutor?


person Rachel W    schedule 02.08.2019    source источник


Ответы (1)


Невозможно добиться желаемого, если вы используете LocalExecutor. С CeleryExecutor, по крайней мере, текущие задачи будут продолжать работать, даже если вы перезапустите планировщик. Однако вам также необходимо развернуть новый материал для рабочих (Celery), но это можно реализовать должным образом, отправив изящные сигналы выключения существующим рабочим и создав новый набор рабочих с обновленным кодом.

person DejanLekic    schedule 02.08.2019