Воздушный поток trigger_rule = none_failed не работает - PullRequest
0 голосов
/ 25 октября 2019

У меня есть демонстрационная 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

1 Ответ

0 голосов
/ 26 октября 2019

Я попытался добавить еще один фиктивный узел в качестве исходной задачи задачи none_failed, и тогда он работает, как и ожидалось.

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

Похоже на none_failed trigger_rule работает только тогда, когда задача имеет более одной восходящей задачи?

...