编程方式标记成功,不要使下游任务运行
创始人
2024-12-01 07:00:35
0

有时候我们需要在运行某些任务后,在不运行下游任务的情况下标记该任务成功。这在一些复杂的调度场景中比较常见,比如当下游任务依赖于一个外部事件的时候。如果下游任务运行失败,我们也不希望它们重新启动,因为它们依赖的外部事件可能还没有满足。因此,我们需要一种机制来标记成功但不运行下游任务。这可以通过在 DAG 中使用 XCom 变量来实现。

假设我们有两个任务 task_1 和 task_2,其中 task_2 是 task_1 的下游任务,我们想要在运行 task_1 后标记它成功但不运行 task_2。可以按照以下步骤实现:

  1. 在 task_1 中设置 XCom 变量:
from airflow.models import XCom
dag_id = 
task_id = 

value = {'result': 'success'}

XCom.set(key='my_key', value=value, dag_id=dag_id, task_id=task_id)
  1. 在 task_2 中检查变量并根据需要终止任务:
from airflow.models import XCom
dag_id = 
task_id = 

value = XCom.get(key='my_key', dag_id=dag_id, task_id=task_id)

if value.get('result') == 'success':
    print('Task 1 succeeded. Terminating Task 2...')
    raise AirflowSkipException('Skipping downstream task as upstream task succeeded.')

上述代码在 task_1 中设置了一个 XCom 变量,当 task_1 成功运行时,它将存储一个包含 “result:succeed” 的字典。在 task_2 中,我们检查该变量并基于其值决定是否继续运行此

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...