🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客
🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。
🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频
每个DAG可以有或者没有调度执行周期,如果有调度周期,我们可以在python代码DAG配置中设置“schedule_interval”参数来指定调度DAG周期,可以通过以下三种方式来设置。
1. 预置的Cron调度
Airflow预置了一些Cron调度周期,可以参照:
http://airflow.apache.org/docs/apache-airflow/stable/dag-run.html#cron-presets,如下图:
在python配置文件中使用如下:
default_args = {'owner': 'airflow', # 拥有者名称'start_date': datetime(2021, 9, 4), # 第一次开始执行的时间,为 UTC 时间'retries': 1, # 失败重试次数'retry_delay': timedelta(minutes=5), # 失败重试间隔
}dag = DAG(dag_id = 'cron_test', #DAG id ,必须完全由字母、数字、下划线组成default_args = default_args, #外部定义的 dic 格式的参数schedule_interval = '@daily' # 使用预置的Cron调度,每天0点0分调度
)
2. Cron
这种方式就是写Linux系统的crontab定时任务命令,可以在https://crontab.guru/网站先生成对应的定时调度命令,其格式如下:
minute hour day month week
minute:表示分钟,可以从0~59之间的任意整数。
hour:表示小时,可以是从0到23之间的任意整数。
day:表示日期,可以是1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
以上各个字段中还可以使用特殊符号代表不同意思:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,”1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如”2-6”表示”2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,步长,例如”0-23/2”表示每两小时执行一次。
在python配置文件中使用如下:
default_args = {'owner': 'airflow', # 拥有者名称'start_date': datetime(2021, 9, 4), # 第一次开始执行的时间,为 UTC 时间'retries': 1, # 失败重试次数'retry_delay': timedelta(minutes=5), # 失败重试间隔
}dag = DAG(dag_id = 'cron_test', #DAG id ,必须完全由字母、数字、下划线组成default_args = default_args, #外部定义的 dic 格式的参数schedule_interval = '* * * * *' # 使用Crontab 定时任务命令,每分钟运行一次
)
3. datetime.timedelta
timedelta是使用python timedelta 设置调度周期,可以配置天、周、小时、分钟、秒、毫秒。在python配置文件中使用如下:
default_args = {'owner': 'airflow', # 拥有者名称'start_date': datetime(2021, 9, 4), # 第一次开始执行的时间,为 UTC 时间'retries': 1, # 失败重试次数'retry_delay': timedelta(minutes=5), # 失败重试间隔
}dag = DAG(dag_id = 'cron_test', #DAG id ,必须完全由字母、数字、下划线组成default_args = default_args, #外部定义的 dic 格式的参数schedule_interval = timedelta(minutes=5) # 使用python timedelta 设置调度周期,可以配置天、周、小时、分钟、秒、毫秒
)