关于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格式的说明:

关于Airflow的一些使用小结_第1张图片

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

关于Airflow的一些使用小结_第2张图片

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

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

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

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

你可能感兴趣的:(软件/工具,Airflow)