Airflow调度TaskGroup触发AttributeError: NoneType无update_relative属性
问题根因
你定义的get_task_group函数没有显式返回值,所以你赋值的run_model_task_group实际是None,当你把None传入上下游依赖设置方法时,就触发了AttributeError: 'NoneType' object has no attribute 'update_relative'报错。
修复方案
只需要修改get_task_group函数,在末尾返回你传入的task_group对象即可:
def get_task_group(dag, task_group): t1 = DummyOperator(task_id='t1', dag=dag, task_group=task_group) t2 = DummyOperator(task_id='t2', dag=dag, task_group=task_group) t3 = DummyOperator(task_id='t3', dag=dag, task_group=task_group) t4 = DummyOperator(task_id='t4', dag=dag, task_group=task_group) t5 = DummyOperator(task_id='t5', dag=dag, task_group=task_group) t_list = [t2, t3, t4] t1.set_downstream(t_list) t5.set_upstream(t_list) # 新增返回语句 return task_group
修改后run_model_task_group就会指向你创建的TaskGroup实例,依赖设置就可以正常运行,最终的任务依赖就会符合预期逻辑:
补充说明
你当前使用的Airflow 2.0.1原生支持TaskGroup的依赖批量设置,无需额外封装特殊逻辑,只要拿到TaskGroup实例就可以直接和其他任务/任务组设置上下游关系,和普通Operator的用法完全一致。
内容的提问来源于stack exchange,提问作者saadi
相关产品推荐
相关产品推荐

