Tag: sidekiq debouncing

Rails和Sidekiq:对Debounce感到困惑

我正在构建一个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 end User.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 我对gem的作用感到困惑。 它是在5分钟内自动将所有作业作为一个作业执行还是仅在每个5分钟窗口中执行第一个作业?