Airflow trigger_rule = none_failed不起作用

问题描述 投票:0回答:1

我有一个演示DAG,其源代码附在下面。

dag非常简单:虚拟成功>>一个失败>>没有一个失败

dummy_success是一个虚拟节点,无论如何都会成功。

one_failed是带有trigger_rule = one_failed的任务,因此它将在dag中跳过。

none_failed是带有trigger_rule = none_failed的任务。

正如所解释的是气流documentation,将触发最终任务,因为其所有父项都处于成功状态或已跳过(在这种情况下被跳过)。但是,当我在GCP作曲家中运行此程序时,最终任务也将被跳过。

我想知道为什么这不符合预期?如果我需要在父项成功执行或跳过任务时触发任务,该怎么办?

我的图像版本是composer-1.7.2-airflow-1.10.2

import datetime as dt

from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator

dag = DAG(
    dag_id='test_trigger_rule',
    schedule_interval='@once',
    start_date=dt.datetime(2019, 2, 28)
)

dummy_success= DummyOperator(task_id='dummy_success', dag=dag)
one_failed= DummyOperator(task_id='one_failed', dag=dag, trigger_rule="one_failed")

none_failed = DummyOperator(task_id='none_failed', dag=dag,trigger_rule='none_failed')

dummy_success >> one_failed >> none_failed
google-cloud-platform airflow
1个回答
0
投票

我尝试将另一个虚拟节点添加到none_failed任务的上游,然后按预期方式工作。

dummy_fix = DummyOperator(task_id='dummy_fix', dag=dag)
dummy_fix >> none_failed

似乎像[[none_failed trigger_rule仅在任务具有多个上游任务时起作用?

© www.soinside.com 2019 - 2024. All rights reserved.