require 'sidekiq/api' class ArchiveWorker include Sidekiq::Worker sidekiq_options queue: :archive, retry: 2, backtrace: true def perform(site_id) site = Site[site_id] return if site.nil? || site.is_banned? || site.is_deleted if site.site_files_dataset.count > 1000 logger.info 'skipping #{site_id} (#{site.username}) due to > 1000 files' return end queue = Sidekiq::Queues[self.class.sidekiq_options_hash['queue']] logger.info "JOB ID: #{jid} #{site_id.inspect}" queue.each do |job| if job.args == [site_id] && job.jid != jid logger.info "DELETING #{job.jid} #{job.args.inspect}" job.delete end end site.archive! end end