如何配置Gramex调度器在每月及每季度首个周一执行任务?
解决方案
每月首个周一触发配置
修改原有的月度调度任务,添加day: 1-7限制,确保仅匹配每月前7天内的周一(也就是当月第一个周一):
schedule: email-alerts-monthly: function: mymodule.check_email_alerts() weekday: mon day: 1-7 # 限定在每月前7天,确保是当月第一个周一 months: '*' utc: true
每季度首个周一触发配置
季度任务同理,在原有季度月份配置基础上,添加day: 1-7,仅匹配1、4、7、10月的第一个周一:
email-alerts-quarterly: function: mymodule.check_email_alerts() weekday: mon day: 1-7 # 限定在季度首月的前7天,确保是季度第一个周一 months: 'jan, apr, jul, oct' utc: true
逻辑说明
每月的第一个周一必然出现在当月1-7日的区间内(比如1号是周日的话,第一个周一就是7号;1号是周一的话就是当天),结合weekday: mon就能精准锁定这个唯一日期。季度任务的逻辑完全一致,只是限定了季度首月(1、4、7、10月)的范围。
如果你的调度系统支持cron表达式,也可以用等价的cron语法实现:
- 每月首个周一:
0 0 1-7 * 1(示例为UTC时间0点触发,可按需调整时分) - 每季度首个周一:
0 0 1-7 1,4,7,10 1
内容的提问来源于stack exchange,提问作者Lahari
相关产品推荐
相关产品推荐

