跳至主要内容

声明式完成Airflow DAGs

项目描述

Airflow声明式DAGs通过YAML。

兼容性

  • Python 2.7 / 3.5+

  • Airflow 1.10.4+

主要功能

  • 声明式DAGs以纯文本YAML形式,有助于更好地理解DAG的外观。专为人类设计,而非程序员。

  • 这使得将DAGs转换为代码混乱变得极为困难。即使你使用复杂的YAML生成器,结果也应该是人类可读的。

  • 不再有关于将业务逻辑与任务管理系统(Airflow)耦合的罪恶感。它们现在可以分开存在。

  • 静态分析变得轻而易举。

  • 它是创建与原始Airflow兼容的自定义调度器/工作进程的好抽象。

示例

请检查tests/dags目录中的DAG示例,这些示例将工作,哪些不会。使用src/airflow_declarative/schema.py模块了解YAML文件架构。它应该是自描述的。

不要害羞去实验:trafaret-config将帮助您了解出了什么问题以及为什么和在哪里。

用法

我们提供了两种安装选项

  1. 作为上游Airflow的补充侧包。

  2. 作为使用Airflow补丁的内置Airflow功能。

上游Airflow

想法是将Python脚本放入dags_folder,该脚本将通过airflow_declarative加载声明性dags。更多详情:[使用上游Airflow安装](https://airflow-declarative.readthedocs.io/en/latest/installation.html#upstream-airflow)。

import os

import airflow_declarative

# Assuming that the yaml dags are located in the same directory
# as this Python module:
root = os.path.dirname(__file__)

dags_list = [
    airflow_declarative.from_path(os.path.join(root, item))
    for item in os.listdir(root)
    if item.endswith((".yml", ".yaml"))
]

globals().update({dag.dag_id: dag for dags in dags_list for dag in dags})

修改过的Airflow

我们在patches目录中提供了可用的补丁。要使用它们,您需要将补丁应用到相应的Airflow版本,然后自行构建。更多详情:[使用修改过的Airflow安装](https://airflow-declarative.readthedocs.io/en/latest/installation.html#patched-airflow)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

airflow-declarative-1.1.tar.gz (28.9 kB 查看哈希值)

上传时间 源代码

构建分发

airflow_declarative-1.1-py2.py3-none-any.whl (19.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持