Airflow 2.7.1:多输出XCom用于动态任务映射的优化方法咨询
更优处理方案
针对Airflow 2.7.1中遇到的这个问题,有两种更简洁的解决方式:
方案1:关闭multiple_outputs,直接返回完整字典
当multiple_outputs=False时,任务返回的整个字典会存储在默认的XCom key(return_value)中,此时通过settings['glue_crawlers_config']提取值不会触发自定义key的XCom限制,expand可以正常处理。修改后的代码如下:
@task(multiple_outputs=False) def get_variable_key(variable): return Variable.get(variable, deserialize_json=deserialize_json) settings = get_variable_key('my_var') run_crawlers = GlueCrawlerOperator.partial( task_id='run_crawlers', wait_for_completion=True).expand(config=settings['glue_crawlers_config'])
方案2:升级到Airflow 2.8.0及以上版本
Airflow 2.8.0修复了expand无法使用自定义key XCom的限制,升级后你可以直接沿用最初的代码,无需额外任务或修改现有配置。
如果必须保留multiple_outputs=True且无法升级版本,你当前使用额外任务提取值的方案就是符合版本限制的可行方案。
内容的提问来源于stack exchange,提问作者Flo
相关产品推荐
相关产品推荐

