python - 设置多个环境的 Airflow

标签 python airflow

设置 Airflow 的惯用方法是什么,这样如果您有两个环境(例如 Production-East 和 Production-West),则仅显示每个环境中的 dags,但它们可以存在于单个存储库中?

最佳答案

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

来自documentation for queues :

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

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

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

关于python - 设置多个环境的 Airflow ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400870/

相关文章:

Airflow:通过 UI 在 Airflow 中创建 DAG

airflow - 用 --mark_success 回填很慢

airflow - 如何抑制 Airflow cli 输出中的错误?

python - Airflow 无法导入自定义 python 包

python - 使用 Altair 增加条形图中的条宽

Python - 字典

java - GMP有任何限制吗?

airflow - 根据 Airflow 中 sql 查询的结果创建动态任务

python - 我如何从字典中读取数据,无论字典中的输入是什么,它都会乘以一个名为“total”的变量?

python - 停止 pylab 叠加图?