У меня есть демонстрационная DAG, исходный код которой приведен ниже.
Даг довольно прост: dummy_success >> one_failed >> none_failed
dummy_success является фиктивным узлом и будет успешным независимо от *. 1007 *
one_failed - это задача с trigger_rule = one_failed, поэтому она будет пропущена в теге.
none_failed - это задача с trigger_rule = none_failed.
Как поясняется в документации по потоку 1018 *, последнее задание будет запущено, поскольку все его родители находятся в успешном состоянии или пропущены (в этом случае пропускаются). Однако, когда я запустил это в GCP composer, последнее задание также пропускается.
Мне интересно, почему это не работает так, как ожидалось? И что еще я могу сделать, если мне нужно, чтобы моя задача была запущена, если родительский элемент был успешным или пропущен?
Моя версия изображения - 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