我在我们的 Rails 服务中有一项经常性的工作,每两周在星期五发送电子邮件。但是,根据我们的业务需求,“每两周”计划的第一周应该是本周,这意味着邮件应该在本周五发出,然后是 2 周,然后是 4 周,以此类推。
服务重新启动时,不应中断计划。例如,在本周五发送电子邮件后,如果我在周六重新启动服务,它不应该将作业安排到下周五 - 仍然应该是下周之后的一周的周五。总之,第0周要持之以恒,坚持这一周。
在 ice_cube 中可行吗?或者还有其他更好的解决方案吗?感谢!
IceCube 内置设置“第 0 周”。创建计划时,请指定开始时间而不是Time.now
。
2.1.4 :012 > s = IceCube::Schedule.new(Time.now.beginning_of_month)
2.1.4 :013 > s.add_recurrence_rule IceCube::Rule.monthly.count(3)
2.1.4 :014 > s.all_occurrences
=> [2014-12-01 00:00:00 -0500, 2015-01-01 00:00:00 -0500, 2015-02-01 00:00:00 -0500]
在这里,我告诉 IceCube 计划从本月初开始,尽管我可以使用任何值。IceCube 根据那个时间计算时间表,给我 12 月 1 日、1 月 1 日和 2 月 1 日。