我们目前正在使用'在Rails项目中安排作业。系统正在扩展以支持多个时区的用户(时区存储在用户模型中),我们希望在其特定时间向用户发送电子邮件。
关于实现这一目标的最佳模式的任何想法?我预测24(或更多 - 有半个时区)'每当'每个电子邮件作业的任务,每个任务在用户表上都有不同的时区过滤器。
有关更清洁解决方案的想法吗?比任何时候都更好的调度程序?什么会创建24/48 cronjobs并调用回调传递时区或UTC偏移?这样的事情。
答案 0 :(得分:1)
我不熟悉'每当'但我遇到了类似的挑战并使用了clockwork
我的问题是我必须在午夜为每个客户运行一个流程。和你一样,我的客户可以在世界任何地方,所以它必须在午夜时分运行。
在午夜运行工作的过程看起来像这样:
TZInfo::Timezone.all_country_zone_identifiers.each do |zone|
every(1.day, {time_zone: zone}, at: '00:00', tz: "#{zone}") do |job_attr|
time_zone = job_attr[:time_zone]
YourJob.perform_later(time_zone)
end
end
' YourJob'我会用那个time_zone找到我的所有客户并完成一份工作。
希望有所帮助。