Airflow DAG 任务依赖性,打破长线

Sco*_*ton 2 python directed-acyclic-graphs airflow

在气流中,我可以缩短这些任务依赖线吗?

a >> b >> c >> f >> G
a >> b >> d >> f >> G
Run Code Online (Sandbox Code Playgroud)

a >> b
b >> c
b >> d
c >> f
d >> f
f >> g
Run Code Online (Sandbox Code Playgroud)

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

有什么建议或建议吗?

Jos*_*ell 7

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

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

a >> b >> [c, d] >> f >> G
Run Code Online (Sandbox Code Playgroud)

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

from airflow.models.baseoperator import chain

chain(a, b, [c, d], f, G)
Run Code Online (Sandbox Code Playgroud)