google-cloud-platform - 气流 trigger_rule=none_failed 不起作用
问题描述
我有一个演示 DAG,其源代码附在下面。
dag 很简单:dummy_success >> one_failed >> none_failed
dummy_success是一个虚拟节点,无论如何都会成功。
one_failed是 trigger_rule=one_failed 的任务,因此将在 dag 中跳过它。
none_failed是 trigger_rule=none_failed 的任务。
正如气流文档所解释的那样,最终任务将被触发,因为它的所有父母都处于成功状态或被跳过(在这种情况下被跳过)。但是,当我在 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
解决方案
我尝试在 none_failed 任务的上游添加另一个虚拟节点,然后它按预期工作。
dummy_fix = DummyOperator(task_id='dummy_fix', dag=dag)
dummy_fix >> none_failed
似乎none_failed trigger_rule 仅在任务具有多个上游任务时才有效?
推荐阅读
- bash - 让 Bash 处理像 Batch 这样的变量
- python - python - 如何根据python中另一个数组的nan元素删除一个数组的元素?
- python - 遍历数据框中的单元格并搜索缺失值
- google-apps-script - 如果问题有特定答案,Google 表格会在提交新表单时发送电子邮件
- excel - Excel 数据透视表过滤器基于列中的单元格
- reactjs - 输入 npm install -g create-react-app 后出现以下消息,如何解决?
- r - factoextra 包的 fviz 函数的预期平均贡献
- bash - Bash return [: =: 意外的操作错误
- javascript - 为什么这个onclick按钮在javascript中不起作用
- laravel - When moving a Laravel repo to a new development environment, how can I get the tests running again?