diff --git a/workers/archive_worker.rb b/workers/archive_worker.rb index 63df8a07..d7d0de15 100644 --- a/workers/archive_worker.rb +++ b/workers/archive_worker.rb @@ -1,8 +1,19 @@ +require 'sidekiq/api' + class ArchiveWorker include Sidekiq::Worker - sidekiq_options queue: :archive, retry: 10, backtrace: true + sidekiq_options queue: :archive, retry: 2, backtrace: true def perform(site_id) - Site[site_id].archive! + site = Site[site_id] + return if site.nil? || site.is_banned? + + queue = Sidekiq::Queue.new self.class.sidekiq_options_hash['queue'] + + queue.each do |job| + job.delete if job.args == [site_id] && job.jid != jid + end + + site.archive! end end