Apache Airflow (六) :DAG catchup 参数设置

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客

 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。

 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


在Airflow的工作计划中,一个重要的概念就是catchup(追赶),在实现DAG具体逻辑后,如果将catchup设置为True(默认就为True),Airflow将“回填”所有过去的DAG run,如果将catchup设置为False,Airflow将从最新的DAG run时刻前一时刻开始执行 DAG run,忽略之前所有的记录。

例如:现在某个DAG每隔1分钟执行一次,调度开始时间为2001-01-01 ,当前日期为2021-10-01 15:23:21,如果catchup设置为True,那么DAG将从2001-01-01 00:00:00 开始每分钟都会运行当前DAG。如果catchup 设置为False,那么DAG将从2021-10-01 15:22:20(当前2021-10-01 15:23:21前一时刻)开始执行DAG run。

举例:有first ,second,third三个shell命令任务,按照顺序调度,每隔1分钟执行一次,首次执行时间为2000-01-01。

设置catchup 为True(默认),DAG python配置如下:

from airflow import DAG

from airflow.operators.bash import BashOperator

from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow', # 拥有者名称
    'start_date': datetime(2001, 1, 1),  # 第一次开始执行的时间,为 UTC 时间
    'retries': 1,  # 失败重试次数
    'retry_delay': timedelta(minutes=5),  # 失败重试间隔
}
dag = DAG(
    dag_id = 'catchup_test1 ', #DAG id ,必须完全由字母、数字、下划线组成
    default_args = default_args, #外部定义的 dic 格式的参数
    schedule_interval = timedelta(minutes=1), # 定义DAG运行的频率,可以配置天、周、小时、分钟、秒、毫秒
    catchup=True # 执行DAG时,将开始时间到目前所有该执行的任务都执行,默认为True
)

first = BashOperator(
    task_id='first',
    bash_command='echo "run first task"',
    dag=dag
)
middle = BashOperator(
    task_id='second',
    bash_command='echo "run second task"',
    dag=dag
)
last = BashOperator(
    task_id='third',
    bash_command='echo "run third task"',
    dag=dag,
    retries=3
)
first >> middle >>last

上传python配置文件到$AIRFLOW_HOME/dags下,重启airflow,DAG执行调度如下:

设置catchup 为False,DAG python配置如下:

from airflow import DAG

from airflow.operators.bash import BashOperator

from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow', # 拥有者名称
    'start_date': datetime(2001, 1, 1),  # 第一次开始执行的时间,为 UTC 时间
    'retries': 1,  # 失败重试次数
    'retry_delay': timedelta(minutes=5),  # 失败重试间隔
}
dag = DAG(
    dag_id = 'catchup_test2', #DAG id ,必须完全由字母、数字、下划线组成
    default_args = default_args, #外部定义的 dic 格式的参数
    schedule_interval = timedelta(minutes=1), # 定义DAG运行的频率,可以配置天、周、小时、分钟、秒、毫秒
    catchup=False # 执行DAG时,将开始时间到目前所有该执行的任务都执行,默认为True
)


first = BashOperator(
    task_id='first',
    bash_command='echo "run first task"',
    dag=dag
)
middle = BashOperator(
    task_id='second',
    bash_command='echo "run second task"',
    dag=dag
)
last = BashOperator(
    task_id='third',
    bash_command='echo "run third task"',
    dag=dag,
    retries=3
)
first >> middle >>last

上传python配置文件到$AIRFLOW_HOME/dags下,重启airflow,DAG执行调度如下:

有两种方式在Airflow中配置catchup:

  • 全局配置

在airflow配置文件airflow.cfg的scheduler部分下,设置catchup_by_default=True(默认)或False,这个设置是全局性的设置。

  • DAG文件配置

在python代码配置中设置DAG对象的参数:dag.catchup=True或False。

dag = DAG(
    dag_id = 'myairflow_execute_bash',

default_args = default_args,    

catchup=False,
    schedule_interval = timedelta(days=1))

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/142697.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试 —— 常见的自动化测试架构!

一个自动化测试架构就是一个集成体系,其中定义了一个特殊软件产品的自动化测试规则。这一体系中包含测试功能函数库、测试数据源、测试对象识别标准,以及各种可重用的模块。这些组件作为小的构建模块,被组合起来代表某种商业流程。自动化测试…

求最大公约数math.gcd()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求最大公约数 math.gcd() [太阳]选择题 下列代码执行输出的结果是? import math print("【执行】print(math.gcd(6, 8))") print(math.gcd(6, 8)) print(&quo…

【汇编】汇编语言的介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、汇编是什么?二、为什么要学习汇编语言?三、学习汇编语言的好处四、安装汇编环境4.1 下载虚拟环境4.2 配置虚拟环境 总结 前言 计算…

我的创作纪念日-我在csdn的三周年

文章目录 机缘收获日常成就憧憬 机缘 2020 年 11 月 09 日,撰写了第 1 篇技术博客,到现在不知不觉三周年了。 慢慢的也会将自己的感受和知识梳理成专栏,记录日常的学习以及通过文章进行技术交流,和大家分享一个我认为比较好的成…

Unity Hub无法登陆的两种终极解决办法

最近换了个电脑,需要重装Unity, 然后unity hub 怎么都无法登陆,登陆不了就不能激活personal license。试了很多次,包括unity hub 2.5.8 和unity hub 3.3都不行,真的是很崩溃。因为是公司的电脑,限制比较多&…

西门子精智屏数据记录U盘插拔问题总结

西门子精智屏数据记录U盘插拔问题总结 注意: 数据记录过程中不允许带电插拔 U 盘! 数据记录的相关功能可参考以下链接中的内容: TIA博途wincc V16 如何进行变量周期归档?

AI大模型低成本快速定制秘诀:RAG和向量数据库

文章目录 1. 前言2. RAG和向量数据库3. 论坛日程4. 购票方式 1. 前言 当今人工智能领域,最受关注的毋庸置疑是大模型。然而,高昂的训练成本、漫长的训练时间等都成为了制约大多数企业入局大模型的关键瓶颈。 这种背景下,向量数据库凭借其独特…

算法笔记-第七章-栈的应用(未完成)

算法笔记-第七章-栈的应用 栈的基本常识栈的解释一栈的解释二 栈的操作序列合法的出栈序列可能的出栈序列补充知识点 后缀表达式(无优先级) 栈的基本常识 栈(Stack)是只允许在一端进行插入或删除操作的线性表。 栈的解释一 栈的…

基础大模型的结构特性与发展

摘要: 基础大模型的结构特性是什么给予的?在建模部分,我们将探索基础模型背后的底层架构,并确定5个关键属性。 首先,我们从讨论计算模型的表现力开始-捕获和吸收真实世界的信息,以及可扩展性-熟练地处理大量…

类和对象(4):Date类.运算符重载 1

一、赋值运算符重载 1.1 运算符重载 运算符重载是具有特殊函数名的函数,函数名字为:关键词operator需要重载的运算符符号。 不能重载C/C中未出现的符号,如:operator。重载操作符必须有一个类类型参数。不能改变用于内置类型运算…

【stack题解】逆波兰表达式求值 | 用队列实现栈

逆波兰表达式求值 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、…

《深入浅出进阶篇》——空间换时间优化——P2671 求和

链接:https://www.luogu.com.cn/problem/P2671 上题干: 题目描述 一条狭长的纸带被均匀划分出了n个格子,格子编号从11到n。每个格子上都染了一种颜色colori​用[1,m]当中的一个整数表示),并且写了一个数字numberi​。…

arm2 day6

串口实现单个字符的收发 main.c uart4.c uart4.h

手机厂商参与“百模大战”,vivo发布蓝心大模型

在2023 vivo开发者大会上,vivo发布自研通用大模型矩阵——蓝心大模型,其中包含十亿、百亿、千亿三个参数量级的5款自研大模型,其中,10亿量级模型是主要面向端侧场景打造的专业文本大模型,具备本地化的文本总结、摘要等…

HTML设置标签栏的图标

添加此图标最简单的方法无需修改内容,只需按以下步骤操作即可: 1.准备一个 ico 格式的图标 2.将该图标命名为 favicon.ico 3.将图标文件置于index.html同级目录即可 为什么我的没有变化? 答曰:ShiftF5强制刷新一下网页就行了

湖南省第六届大学生测绘综合技能大赛 GIS 应用赛项

注意事项: ①确认试题编号正确后再开始作答。 ②所有图件需清晰可辨。 ③新建数值型字段设置数据类型为双精度,数字格式为数值,小数位数默认。 ④答卷中不能出现任何涉密信息,答卷文档转成PDF提交。 1.(25 分&#xf…

Oracle数据库、实例、用户、表空间和表之间的关系

一、Oracle数据库中数据库、实例、用户、表空间和表(索引、视图、存储过程、函数、对象等对象)之间的关系。 1、Oracle的数据库是由一些物理文件组成:数据文件控制文件重做日志文件归档日志文件参数文件报警和跟踪日志文件备份文件。 2、实…

数据库 并发控制

多用户数据库系统:允许多个用户同时使用同一个数据库的数据库系统 交叉并发方式:在单处理机系统中,事务的并行执行实际上是这些并行事务的并行操作轮流交叉运行 同时并发方式:在多处理机系统中,每个处理机可以运行一个…

云原生实战课大纲

1. 云原生是什么 原生应用(java,pyrhon) 上云的过程应用上云遇到的问题1.微服务的拆分 微服务的访问关系应用的架构云原生适合什么样的人去学具备什么样的前提条件云原生要学习什么docker k8s devlops server mesh jks k8s监控吧自己的微服务上云另…

【C语言】

C语言 1. C语言基础1.1 数据类型和占位符1.2 异或1.3 关键字1.4 const1.5 extern1.6 typedef1.7 static1.8 左值和右值1.9 位进行操作赋值 2. C指针3. 二维数组和指针4. 函数传递二维数组4.1 形参给出第二维的长度。4.2 形参声明为指向数组的指针。4.3 形参声明为指针的指针。 …