You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Airflow多分支指向同一任务时仅第二个分支生效问题

问题分析

你的问题核心在于translations_pending_task被两个分支任务(check_pending_translation和check_pending_translation2)作为下游依赖,但Airflow默认触发规则all_success要求所有上游任务都成功完成才会执行该任务:

  • 当check_pending_translation返回translations_pending时,会触发translations_pending_task,同时跳过xls_to_features_task及其后续任务,此时check_pending_translation2处于**跳过(skipped)**状态。由于默认规则要求所有上游成功,translations_pending_task因存在跳过的上游而被整体跳过。
  • 当流程走到check_pending_translation2并返回translations_pending时,check_pending_translation已成功执行(选择了xls_to_features分支),两个上游均满足all_success要求,因此translations_pending_task正常执行。
解决方案

修改translations_pending_task的触发规则为one_success,只要任意一个上游任务成功触发,该任务就会执行:

# 先导入TriggerRule
from airflow.utils.trigger_rule import TriggerRule

translations_pending_task = EmailOperator(
    task_id="translations_pending", 
    to=emails, 
    subject="Vsehub translations pending", 
    html_content=translation_instructions, 
    files=[data['pending_feature_translations_file_path']],
    trigger_rule=TriggerRule.ONE_SUCCESS  # 添加触发规则配置
)
额外验证点
  • 确认check_files分支函数返回的translations_pending与translations_pending_task的task_id完全一致,无拼写或大小写错误
  • 若使用Airflow 2.x以下版本,建议升级到稳定2.x版本,旧版本对多分支指向同一任务的处理存在已知bug

内容的提问来源于stack exchange,提问作者Farn Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:28:16