问题描述
达到可配置的阈值后,我必须执行一些操作。让我解释一下这种情况:
假设我在数据库中进行以下配置:
Time Action
---------------
5 min A1
10 min A2
20 min A3
我现在必须安排一项工作(可能在sidekiq中),以便:
At 5th min - action A1 is triggered
At 10th min - action A2 is triggered
At 20th min - action A3 is triggered
Reset the timer
At 25th min - action A1 is triggered
so on..
我知道我应该描述自己所做的努力,但是我现在一无所知,需要一个指导来实现这一目标。
解决方法
没有某种形式的JobQueue
宝石。
objects = IterableTimeObject.all
while(some_condition)
objects.each do |obj|
sleep(obj.time*60)
Call_Some_Task
end
end
objects = IterableTimeObject.all
max_minute = objects.map{|obj| obj.time}.max
while(some_condition)
objects.each do |obj|
PerformSomeJob.set(wait:
obj.time*60.seconds).perform_later(params1,params2)
end
sleep(max_minute*60)
end
请注意,时间是对象上的分钟数。 obj.time*60
实际上给出了执行作业之前要等待的秒数。
在最长的几分钟内放松该过程,然后再次恢复。
希望这会有所帮助。