关于Airflow的一些使用小结

1.首先,官网文档在这:Airflow Documentation

2.然后,记录一下我觉得写得很不错的几篇关于Airflow的文章。

1) AirFlow简介

2) AirFlow使用第一个DAG示例

3) 浅谈调度工具——Airflow

3.关于如何安装,还没试过所以就不总结这个了,而对于Airflow的概念介绍也在上面几篇文章可以详细了解到。一下才是我主要想总结的一些使用的注意事项。

1) 首先,当我们设置Dag的schedule_interval的时候,如果发现一直不能调度成功,应该就是dag的default_args设置的start_date不正确,事实上我们一般会设置成datetime.now(),然后结合schedule的参数来进行调度,但是这样永远也不会自动开始定时调度。为什么呢?Airflow调度机制有点特殊,比如设置每天1点钟,昨天的一点钟就会算作一次调度任务,但是今天的不会,总体调度一次并且立刻开始执行任务,所以设置成now就永远不开始了。

正确的做法是将start_date设置为前一天:airflow.utils.dates.days_ago(1)。虽然这样会导致一下子调度n多次,比如schedule设置为一小时一次,那么就会一次性队列里面有24+当前时间个任务排队进行中。或者将start_date设置为前一个小时。

2) Airflow的Schedule虽然可以写自定义的crontab但是这个格式和往常在别的地方用过的cron表达式格式不太一样。

比如Airflow这里的一般是5位数的,虽然也可以写6位。下图是Crontab格式的说明:

或者,也可以像官网介绍的这样使用:

比如,常用的一天调度一次可以写成:timedelta(days=1) 或者 @daily

值得注意的是,*/30 * * * * 指的是每个小时的30分的时候调度而不是半小时一次,比如说:1:30 , 2:30 , 3:30 ...

半小时调度一次的写法应该是:0/30 * * * *

3) Airflow使用的时间默认是UTC的,当然也可以改成服务器本地的时区。

4. 关于airflow发送邮件可以参考:https://stackoverflow.com/questions/51829200/how-to-set-up-airflow-send-email

 

1. 如果遇到dag正常trigger了但是task没有启动,注意设置dag的args: 'start_date': airflow.utils.dates.days_ago(0)。

2. 如果第一次发布dag到airflow server,有dag语法错误,然后修改后再次发布,这个时候可能会遇到webserver界面还是显示之前的错误, 因为错误是scheduler生成的,也就是说需要重启scheduler了。参考:Airflow webserver报错

3. 如果需要在dag中动态生成多个task,可以参考:Task N+1 is Dependent on TaskN ,  Airflow Setting up Dependencies

4. 如果需要生成Crontab表达式:Crontab Generator1Crontab Generator2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值