python - Airflow DAG 任务依赖,打破长线

标签 python airflow directed-acyclic-graphs

在 airflow 中,我可以缩短这些任务依赖行吗?

a >> b >> c >> f >> G
a >> b >> d >> f >> G

a >> b
b >> c
b >> d
c >> f
d >> f
f >> g

这些是等价的吗?时间或效率上有什么不同吗? 询问您是否使用代码格式化程序行长度的原因是第一个样式和更长的变量任务名称问题。

有什么推荐或建议吗?

最佳答案

这些变体中的任何一个都没有任何时间或效率的优缺点,但我认为这更像是一个“什么更具可读性”的问题。

第一个更具可读性。但是,存在一些重复,可以通过使用列表让任务并行执行来缩短重复:

a >> b >> [c, d] >> f >> G

对于非常长的依赖链,我喜欢使用方便的 chain()方法。它更灵活一些(即您不能使用移位运算符设置两个任务列表之间的依赖关系,但您可以使用 chain())并且可能被认为更容易理解,因为它是一个功能。奇怪的是,根据我的经验,这确实有助于代码格式化中的行长度限制,并且可以使用这些格式化程序很好地重新格式化(例如黑色)。使用此方法,示例依赖项可以重写为:

from airflow.models.baseoperator import chain

chain(a, b, [c, d], f, G)

关于python - Airflow DAG 任务依赖,打破长线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71325417/

相关文章:

python - 以编程方式将列名添加到 numpy ndarray

python - 使用 Py2exe 拒绝访问

python - 检查 heapq 是否包含值

python - apache Airflow 调度程序未调度作业

python - Airflow BashOperator 找不到 Bash

Airflow UI 将执行日期时间更改为可读格式

algorithm - 针对下面提到的勘误表的建议解决方案是否正确?

jquery - 如何以 JSON 形式返回 Sqlalchemy 结果?

python - 为什么线性最短路径算法对无向循环图不起作用?

ubuntu - 运行 Airflow 时无法访问 localhost