この目的でClass: Sidekiq::ScheduledSet
を使用できます。
ドキュメントhere このクラスは、Sidekiq Webインターフェイスで使用されます。
例: 設定されたジョブを保存するときにジョブID(jid)を保存します。その後、照会インスタンス
def is_running?
require 'sidekiq/api'
ss = Sidekiq::ScheduledSet.new
jobs = ss.select {|ret| ret.jid == self.jid}
jobs.any?
end
のためにそれを呼び出すことができますまたは、あなたはaround_perform
フックで仕事の内側DBフラグを設定することができます。
class SomeJob < ActiveJob::Base
queue_as :some_job
around_perform do |job, block|
start_import_process_log job.arguments[0], job.arguments[1] || {}
block.call
finish_import_process_log
end
# ...
private
def start_import_process_log import_process, options={}
#some actions
end
def finish_import_process_log
end
end
この例では、関連するログレコードが作成されます。 またはbefore_perform/after_performを使用できます。
私の練習では、長い作業でログ記録を消しています。
例としてジョブを見つけて殺す必要があるとき - 私はSidekiq::ScheduledSet
を使用しています。