我正在构建一个Tinder风格的应用程序,用户可以在其中滑动事件。
目前,我有一个后台作业,在用户任何时候都会被触发。随着用户每分钟浏览20个事件,我创造了大量的后台工作:
worker.rb
class Worker
include Sidekiq::Worker
def perform(user_id, newly_voted_event_id)
user = User.find(user_id)
event = Event.find(newly_voted_event_id)
events_to_rerank = event.similar.unvoted(user_id)
events_to_rerank.each do |e|
e.rank(user_id)
end
end
enduser.rb:
def recalculate_similar_events(event_id)
CalculateRelevantEventRankingsForUser.perform_async(self.id, event_id)
end我想做的是每个用户每5分钟最多运行一次后台作业。因此,我将使用sidekiq-debounce将我的后台工作更改为:
def recalculate_similar_events(event_id)
CalculateRelevantEventRankingsForUser.perform_in(5.minutes, self.id, event_id)
end我对宝石的作用很困惑。它是在5分钟内作为一个作业自动执行所有作业,还是只在每5分钟窗口中执行第一个作业?
发布于 2016-10-18 22:47:44
https://stackoverflow.com/questions/40119004
复制相似问题