python - 为多种环境设置气流
问题描述
设置 Airflow 的惯用方法是什么,所以如果您有两个环境,例如 Production-East 和 Production-West,只有来自每个环境的 dag 会显示,但它们可以存在于单个存储库中?
解决方案
实现这一点的理想方法是使用命名队列。设置多个工人,一些在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 集群中运行)本身,因为它需要非常特定的环境和安全权限)。
推荐阅读
- javascript - 在 Typescript 中深度克隆实体实例?
- java - Spring Envers 条件更新
- c++ - 带有 cmake 的 sqlite3 dll
- linux - 为什么我从 32 位 NASM 汇编代码中得到这个结果?
- java - 取消定义 packageName 和捕获图标
- ios - 在 iOS 中设置蓝牙设备的快捷方式
- jquery - CanvasJS Carousel 不适用于 Bootstrap 4
- macos - path 包含非目录或不存在的组件:/path/to/project?
- c++ - 创建一个程序来计算一个包含指数的公式
- ubuntu - 将所有父文件夹和子目录分开压缩。Ubuntu