Cha*_*lor 2 ruby ruby-on-rails sidekiq
使用Sidekiq,在每个时区的特定时间执行它的策略是什么?
例如,我需要Sidekiq每天在世界各地的以下时间和时区每天执行一项任务:
...
8:00 PM EST
8:00 PM CST
8:00 PM MST
8:00 PM PST
...
我只会在每个小时的开始运行相同的工作。您可能想使用cron每小时运行一次作业,或者查看此列表以了解如何在Sidekiq中创建重复作业。
作为第一步,您需要确定当前所在的所有时区8AM。例如这样:
8am_time_zones = ActiveSupport::TimeZone.all
.select { |tz| tz.now.hour == 8 }
.map { |tz| tz.tzinfo.name }
#=> ["America/Los_Angeles", "America/Tijuana", "America/Phoenix"]
Run Code Online (Sandbox Code Playgroud)
使用此列表,您可以轻松地从数据库中加载位于该时区的用户(假设您以这种格式存储了用户的时区)并向他们发送电子邮件:
User.where(time_zone: 8am_time_zones).find_each do |user|
# email_newsletter(recipient: user)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |