Airflow 采坑锦集
http://www.wortyby.com/2018/11/05/airflow%E4%B9%8BDAGs%E8%AF%A6%E8%A7%A3/
https://www.kancloud.cn/luponu/airflow-doc-zh/889654
使用depends_on_past触发条件
- 条件一
触发条件有两个维度, 以T1&T2->T3 这样的dag为例:
一个维度是: 要根据dag上次运行T3的状态确定本次T3是否被调用, 由DAG的default_args.depends_on_past参数控制, 为True时, 只有上次T3运行成功, 这次T3才会被触发
- 条件二
另一个维度是: 要根据前置T1和T2的状态确定本次T3是否被调用,
DAG中有两个初始化配置 concurrency 和 max_active_runs
concurrency:表示一个DAG,在同一时间点最大可以运行多少个Task。
max_active_runs:表示一个DAG,在同一时间点最多可以被运行几个。
假如我们一个DAG同一时间只能被运行一次,那么一定要指明 max_active_runs = 1
如果我们DAG中有10个Task,我们如果希望10个Task可以在触发后可以同时执行,那么我们的concurrency需要不小于10才行,若小于10,那么会有任务需要等待之前的任务执行完成才会开始执行。
就像上图,一个DAG被同时触发了2次,但是同时只有1个DAG的2个Task执行,另外一个DAG的两个Task被堵塞,等待资源的释放。