气流计划在每月的15号之前的星期一运行任务

时间:2018-09-06 11:49:53

标签: cron airflow airflow-scheduler

是否可以安排气流DAG在每个月15日之前的星期一的特定时间运行?我认为此cron字符串可能会做到这一点,但我不确定我是否正确理解

0 10 8-14 * MON

因此,我认为应该只在每月的8号到14号之间的星期一10:00运行。由于在8号到14号之间只能有一个星期一,因此该月应该每月运行一次,并且应该是该月15号之前的星期一。

对吗?

1 个答案:

答案 0 :(得分:2)

croniter模块(Airflow用于执行执行日期/时间的计算)supports the hash symbol for the day-of-week field,您可以在每个月的第二个星期一安排我认为可以使用的时间。

例如,"30 7 * * 1#2"表示每月第二个星期一的上午7:30运行。使用此代码对其进行测试:

from croniter import croniter 
from datetime import datetime 
cron = croniter("30 7 * * 1#2") 
for i in range(10):
    print(cron.get_next(datetime))

产量:

datetime.datetime(2018, 10, 8, 7, 30)
datetime.datetime(2018, 11, 12, 7, 30)
datetime.datetime(2018, 12, 10, 7, 30)
datetime.datetime(2019, 1, 14, 7, 30)
datetime.datetime(2019, 2, 11, 7, 30)
datetime.datetime(2019, 3, 11, 7, 30)
datetime.datetime(2019, 4, 8, 7, 30)
datetime.datetime(2019, 5, 13, 7, 30)
datetime.datetime(2019, 6, 10, 7, 30)
datetime.datetime(2019, 7, 8, 7, 30)