запусти работу sidekiq от работника (ruby) - PullRequest
0 голосов
/ 05 сентября 2018
workers = Sidekiq::Workers.new
workers.each do |_process_id, _thread_id, work|
  p work['payload']['jid']
end

Как я могу получить работу у рабочего?

У меня есть jid, но работа не в очереди, потому что все еще выполняется ...

1 Ответ

0 голосов
/ 06 сентября 2018

Вы сможете получить это через sidekiq API-очередь

С чем-то вроде:

queue = Sidekiq::Queue.new("mailer")
queue.select do |job|
  job.jid == 'abcdef1234567890' # use your actual jid
end

ОБНОВЛЕНИЕ:

Если вы ищете действительно идентификатор работы, вы можете найти его следующим образом. Вы можете посчитать записи:

queue.entries.count

Вы можете получить задания из очереди по тому, как давно они были поставлены в очередь:

queue.entries.select{|e| e.enqueued_at > 24.hour.ago}

Вы получаете элемент из очереди и вызываете методы для него

job = queue.entries.first
job.jid # will show the job id hash string
job.klass # will return the name of the worker class as string
job.enqueued_at # will return when the job was enqueued in UTC
job.item # will return a hash object with key & values

Вы также можете сделать:

Sidekiq::Status.get_all('9bb6c1c7cede38e6b8085d72') # use jid
...