Проверьте имя работника, которое вызывает конкретный идентификатор задания - PullRequest
0 голосов
/ 14 мая 2019

Я работаю над проектом Ruby on Rails.Мне интересно, смогу ли я получить имя работника, которое вызвало конкретную работу, используя идентификатор задания, чтобы я мог отобразить соответствующее сообщение после того, как оно будет сделано.Это возможно?или мне просто сохранить имя рабочего в модели?

#I have a method that creates the job

def generate

   my_model.job_id = HardWorker.perform_async()
   my_model.save!
end

def check_status
   if job_id && Sidekiq::Status::complete?(my_model.job_id)
      # if HardWorker
      #    "HardWorker is done!"
      # elseif AnotherWorker
      #    "AnotherWorker is Done!"
      # end
   end
end

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете использовать следующий код для получения Worker Class, используя идентификатор задания:

queue = Sidekiq::Queue.new
job = queue.detect { |job| job.jid == job_id //<-- the job id you have from perfrom_async }

Ваш код будет выглядеть примерно так:

def check_status
  queue = Sidekiq::Queue.new
  job = queue.detect { |job| job.jid == my_model.job_id }

  if job_id && Sidekiq::Status::complete?(my_model.job_id)
    puts "#{job.klass} is done" <-- The worker that triggered the job
  end
end

Подробнее об очередях здесь

...