使用 Airflow 进行零停机部署

Zero downtime deployment with Airflow

我的团队正在使用 Airflow 来安排 ETL 作业。现在我们在 LocalExecutor 上。我们也做持续集成。

现在,当我们发布某些类型的更改(例如添加新的操作员)时,我们必须重新启动 prod airflow scheduler 才能使更改生效。当我们重新启动调度程序时,任何活跃的 运行 任务都会被杀死并且必须重新启动,这是一个巨大的痛苦。

我正在尝试弄清楚如何避免重新启动调度程序或防止 运行 任务被调度程序重新启动中断。我读过一些关于该主题的文章,例如 this one,但 none 使用 LocalExecutor。

是否需要升级到 Celery 作为执行程序才能完成此操作,或者有没有办法在 LocalExecutor 上执行此操作?

使用LocalExecutor无法实现你想要的。使用 CeleryExecutor 至少当前 运行 任务将继续 运行 即使您重新启动调度程序。但是,您也需要将新内容部署到工作人员 (Celery),但这可以通过向现有工作人员发送正常关闭信号并使用更新的代码创建一组新工作人员来正确实施。