是否可以在一个月的第5天、月底前的14天和月底的14天内三次运行DAG。
谢谢
发布于 2021-09-09 16:32:15
另一个选项是在Cron表达式中指定日期。关于这个回答,我们可以在月底使用L。然而,它无法确定月底前的14天。我不确定用14来代表过去两周的时间是否可以接受。
提议的schedule_interval将是"0 0 5,14,L * *"。但是由于气流将在每个周期结束时运行,执行日期将显示上个月的日期。您需要确保start_date启动触发器的时间超过一个月。
要用Python解决第14天的问题,
import calendar
last_day = calendar.monthrange("{{ execution_date.year }}", "{{ execution_date.month }}")[1]
schedule_interval = f"0 0 5,{last_day - 14},L * *"或者将摆摆方法与execution_date一起使用:
last_day = "{{ execution_date.days_in_month }}"
schedule_interval = f"0 0 5,{last_day - 14},{last_day} * *"不要忘记在DAG中为气流2.1或更高版本添加render_template_as_native_obj=True,使其输出为Python而不是string。如果它不起作用,就需要将go转换为int。
引用Crontab.guru中的cron格式 (这里不支持L字符,所以我用31作为位置持有者)
发布于 2021-09-09 09:08:14
我认为这里最好的解决方案是每天运行DAG,然后检查适合您的条件的execution_date。
Crontab表达式只支持前进日。对于这个月的第五天,应该是'0 0 5* *',但是向后是不可能的。
https://stackoverflow.com/questions/69115149
复制相似问题