首页 > 解决方案 > 为多种环境设置气流

问题描述

设置 Airflow 的惯用方法是什么,所以如果您有两个环境,例如 Production-East 和 Production-West,只有来自每个环境的 dag 会显示,但它们可以存在于单个存储库中?

标签: pythonairflow

解决方案


实现这一点的理想方法是使用命名队列。设置多个工人,一些在Production-East环境中工作,一些在Production-West环境中。这样,两个 DAG 都显示在 UI 中,但它们仅在具有特定环境的工作机器上执行。

队列的文档中

使用 CeleryExecutor 时,可以指定发送任务的 celery 队列。queue 是 BaseOperator 的一个属性,因此任何任务都可以分配给任何队列。airflow.cfg环境的默认队列在celery -> default_queue. 这定义了任务在未指定时分配到的队列,以及 Airflow 工作人员在启动时侦听的队列。

Worker 可以监听一个或多个任务队列。当一个worker启动时(使用命令airflow worker),可以指定一组逗号分隔的队列名称(例如airflow worker -q spark)。然后,该工作人员将仅拾取连接到指定队列的任务。

如果您需要专门的工作人员,这可能很有用,无论是从资源角度(例如非常轻量级的任务,一个工作人员可以毫无问题地完成数千个任务),或者从环境角度(您希望工作人员在 Spark 集群中运行)本身,因为它需要非常特定的环境和安全权限)。


推荐阅读