首页 > 解决方案 > 具有异常时间的气流调度 DAG

问题描述

我试图找出在不符合通常安排的方式的气流中安排 DAG 的最佳方式。

我希望 DAG 运行的时间是周一至周五上午 9:40 到下午 4:00,每十分钟运行一次。

1)cron可以在这里工作,因为我可以设置多个执行相同代码并为它们提供不同cron触发器的 DAG。例如,触发第一个在 9:40 运行并运行一次,第二个在 9:50 运行(也运行一次),然后第三个从上午 10 点到 4 点运行,每 10 分钟一次。

2)气流预设(例如@hourly)或计时器间隔在这里也不会真正起作用,因为据我所知,没有办法用奇怪的开始时间(上午 9 点 40 分)和周一至周五限制。但至少在这里我可以将 timedelta 设置为 10 分钟。

3)另一个选项是将调度程序设置为None并使用该subprocessing模块让第二个脚本从外部触发 DAG。

在我的理想场景中,我可以编写一个生成器,它会给 pythondatetimes我希望触发 dag 并将其提供给 DAG 对象。我想我可以将该解决方案与上面的 3 结合起来。

解决方案 1 可以工作,但似乎很老套。

想知道其他人在这种情况下做了什么。

标签: pythonairflowairflow-scheduler

解决方案


*/10 9-16 1-5 * *

此 CRON 将在上午 9 点到下午 4 点(16 小时)之间每 10 分钟为您提供一次跑步,并且仅在周一到周五(0-5 点)。

我不知道您如何才能获得更精细的粒度,以便从上午 9 点 40 分到下午 4 点。

*/10表示每 10 分钟运行一次
9-16表示仅在 9 小时和 16 小时之间
1-5运行 表示按照下表运行:

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

推荐阅读