python - 成功运行任务但不跳过
问题描述
我在 AirFlow 中有一些任务,只有在前面的任务成功且未跳过时,我才想触发这些任务。根据 AirFlow 文档,如果我跳过一个任务并将下一个任务设置为“all_success”,它将被触发。有没有办法避免这种情况?
my_task = PythonOperator(
task_id='task_id',
python_callable=my_func,
provide_context=True,
trigger_rule='all_success',
dag=my_dag)
http://airflow.apache.org/concepts.html#trigger-rules
必须了解触发规则和计划级别跳过的任务之间的交互。跳过的任务将通过触发规则 all_success 和 all_failed 级联,但不是 all_done、one_failed、one_success、none_failed、none_skipped 和 dummy。
谢谢!
解决方案
我认为您可以修改文档中给出的分支示例。在一个分支上,首先触发 none_skipped,然后是您想要的任务,如果 none_skipped 和 all_success。默认情况下,另一个分支只是 all_success,并且会在没有 none_skipped 的情况下围绕您只希望完成的分支进行分支。
run_this_first = DummyOperator(task_id='run_this_first', dag=dag)
branching = BranchPythonOperator(
task_id='branching', dag=dag,
python_callable=lambda: 'none_skipped_branch'
)
none_skipped_branch = DummyOperator(task_id='none_skipped_branch',trigger_rule='none_skipped', dag=dag)
none_skipped_and_all_success = DummyOperator(task_id='none_skipped_and_all_success', dag=dag)
branch_false = DummyOperator(task_id='branch_false', dag=dag)
join = DummyOperator(task_id='join', dag=dag)
run_this_first >> branching
branching >> none_skipped_branch >> none_skipped_and_all_success >> join
branching >> branch_false >> join
推荐阅读
- node.js - Windows 10 中的 Node.js 端口权限被拒绝
- visual-studio - VSTO 'ClickOnce manifests' 使用代码签名 ECC SHA384 签名
- sql - 数据库架构 - 设置与组及其成员相关的限制值
- php - PHP 访问 Redis 报告的 IO WAIT 超长
- buddypress - 如何隐藏非活动的 BuddyPress 个人资料?
- django - Django admin get_readonly_fields 不一致的行为
- python - Keras:如何使用预训练的 ELMO 层加载模型
- javascript - 当一个已经打开不工作时隐藏其他下拉列表
- python - 如何在没有python错误的情况下打印Congrats
- javascript - 如何在 MongoDB find() 中小写字段数据