Airflow 安排任务在每月 15 号之前的星期一运行

Dan*_*Dan 1 cron airflow airflow-scheduler

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

0 10 8-14 * MON
Run Code Online (Sandbox Code Playgroud)

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

那是对的吗?

joe*_*oeb 10

croniter模块(Airflow 用于执行日期/时间计算)支持星期字段的哈希符号,这将允许您安排每个月的第二个星期一,我认为这会起作用。

例如,"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))
Run Code Online (Sandbox Code Playgroud)

产量:

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)
Run Code Online (Sandbox Code Playgroud)

  • from croniter import croniter from datetime import datetime cron = croniter("30 7 * * 1#2") print(cron.get_next(datetime)) # repeat (2认同)