34 lines
1 KiB
Ruby
34 lines
1 KiB
Ruby
# frozen_string_literal: true
|
|
require 'sidekiq/api'
|
|
|
|
class ScreenshotBlackBoxWorker
|
|
include Sidekiq::Worker
|
|
sidekiq_options queue: :screenshot_black_box, retry: 10, backtrace: true
|
|
|
|
def perform(site_id, path)
|
|
site = Site[site_id]
|
|
return true if site.nil? || site.is_deleted
|
|
|
|
queue = Sidekiq::Queue.new self.class.sidekiq_options_hash['queue']
|
|
logger.info "JOB ID: #{jid} #{site_id} #{path}"
|
|
queue.each do |job|
|
|
if job.args == [site_id, path] && job.jid != jid
|
|
logger.info "DELETING #{job.jid} for #{site_id} #{path}"
|
|
job.delete
|
|
end
|
|
end
|
|
|
|
scheduled_jobs = Sidekiq::ScheduledSet.new.select do |scheduled_job|
|
|
scheduled_job.klass == 'ScreenshotBlackBoxWorker' &&
|
|
scheduled_job.args[0] == site_id &&
|
|
scheduled_job.args[1] == path
|
|
end
|
|
|
|
scheduled_jobs.each do |scheduled_job|
|
|
logger.info "DELETING scheduled job #{scheduled_job.jid} for #{site_id} #{path}"
|
|
scheduled_job.delete
|
|
end
|
|
|
|
BlackBox.new(site, path).check_screenshot
|
|
end
|
|
end
|