使用Sidekiq,在每个时区的特定时间执行它的策略是什么?
例如,我需要Sidekiq每天在以下时间和地区执行任务:
bp.get_figure().gca().set_xlabel("")
答案 0 :(得分:4)
我会在每小时开始时做同样的工作。您可能希望每小时使用cron运行作业,或者查看此列表以了解如何创建recurring jobs in 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"]
使用此列表,您可以轻松地从数据库加载居住在该时区的用户(假设您以此格式存储用户的时区)并向他们发送电子邮件:
User.where(time_zone: 8am_time_zones).find_each do |user|
# email_newsletter(recipient: user)
end
答案 1 :(得分:0)
Sidekiq没有针对您每天使用情况的计划机制。您需要一个像whenever这样的cron调度程序。
假设您的服务器配置为UTC,您只需创建日程安排:
# EST 8pm
every 1.day, :at => '1:00 am' do
runner "MyModel.task_to_run_at_1_am_UTC"
end
# CST 8pm
every 1.day, :at => '2:00 am' do
runner "MyOtherModel.task_to_run_at_2_am_UTC"
end
要在一行中完成:
every '* 6,7,8,9,10 1 * *' do
runner "MyOtherModel.task_to_run_at_2_am_UTC"
end
看看如何制定cron syntax。
答案 2 :(得分:0)
创建此作业并每 1 小时 1 分钟执行一次
Dim i As Integer,i3 As Integer, i1 As Integer, i2 As Integer