Apache Airflow (七) :DAG调度周期设置

🏡 个人主页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 设置调度周期,可以配置天、周、小时、分钟、秒、毫秒
)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Airflow是一个基于Python的开源工作流调度和任务编排平台,它使用DAG(有向无环图)来定义任务之间的依赖关系。通过Airflow,您可以轻松地创建、调度和监控复杂的工作流。 以下是使用Airflow创建和调度DAG图的示例代码: 1. 安装Airflow: ```shell pip install apache-airflow ``` 2. 创建DAG图文件(例如,my_dag.py): ```python from datetime import datetime from airflow import DAG from airflow.operators.python_operator import PythonOperator def task1(): # 任务1的代码 def task2(): # 任务2的代码 # 创建DAGdag = DAG('my_dag', description='DAG调度示例', schedule_interval='0 0 * * *', start_date=datetime(2022, 1, 1)) # 定义任务1和任务2 task_1 = PythonOperator(task_id='task_1', python_callable=task1, dag=dag) task_2 = PythonOperator(task_id='task_2', python_callable=task2, dag=dag) # 定义任务之间的依赖关系 task_1 >> task_2 ``` 3. 启动Airflow调度程序: ```shell airflow scheduler ``` 4. 启动Airflow Web服务器: ```shell airflow webserver -p 8080 ``` 5. 在浏览器中访问`http://localhost:8080`,您将看到Airflow的Web界面。 在Web界面中,您可以查看已定义的DAG图、运行任务、监控任务状态等。Airflow提供了丰富的功能,如任务调度、任务重试、任务监控、动态调整工作流等。 这只是一个简单的示例,您可以根据自己的需求和任务定义更复杂的DAG图。Airflow提供了更多的操作符和功能,如BashOperator、PythonOperator、BranchPythonOperator等,以及丰富的插件生态系统。 希望这些信息能帮助您开始使用Airflow进行DAG调度!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT贫道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值