Class: Sidekiq::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/api.rb

Overview

Encapsulates a pending job within a Sidekiq queue or sorted set.

The job should be considered immutable but may be removed from the queue via Job#delete.

Direct Known Subclasses

SortedEntry

Constant Summary collapse

KNOWN_WRAPPERS =
[/\ASidekiq::Extensions::Delayed/, "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item, queue_name = nil) ⇒ Job

Returns a new instance of Job.



195
196
197
198
199
# File 'lib/sidekiq/api.rb', line 195

def initialize(item, queue_name=nil)
  @value = item
  @item = item.is_a?(Hash) ? item : Sidekiq.load_json(item)
  @queue = queue_name || @item['queue']
end

Instance Attribute Details

#itemObject (readonly)

Returns the value of attribute item.



193
194
195
# File 'lib/sidekiq/api.rb', line 193

def item
  @item
end

Instance Method Details

#[](name) ⇒ Object



260
261
262
# File 'lib/sidekiq/api.rb', line 260

def [](name)
  @item.__send__(:[], name)
end

#argsObject



231
232
233
# File 'lib/sidekiq/api.rb', line 231

def args
  @item['args']
end

#deleteObject

Remove this job from the queue.



253
254
255
256
257
258
# File 'lib/sidekiq/api.rb', line 253

def delete
  count = Sidekiq.redis do |conn|
    conn.lrem("queue:#{@queue}", 1, @value)
  end
  count != 0
end

#display_argsObject



218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/sidekiq/api.rb', line 218

def display_args
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
  @args ||= case klass
            when /\ASidekiq::Extensions::Delayed/
              (_, _, arg) = YAML.load(args[0])
              arg
            when "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
              args[1..-1]
            else
              args
            end
end

#display_classObject



205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/sidekiq/api.rb', line 205

def display_class
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
  @klass ||= case klass
             when /\ASidekiq::Extensions::Delayed/
               (target, method, _) = YAML.load(args[0])
               "#{target}.#{method}"
             when "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
               args[0]
             else
               klass
             end
end

#enqueued_atObject



239
240
241
# File 'lib/sidekiq/api.rb', line 239

def enqueued_at
  Time.at(@item['enqueued_at'] || 0).utc
end

#jidObject



235
236
237
# File 'lib/sidekiq/api.rb', line 235

def jid
  @item['jid']
end

#klassObject



201
202
203
# File 'lib/sidekiq/api.rb', line 201

def klass
  @item['class']
end

#latencyObject



247
248
249
# File 'lib/sidekiq/api.rb', line 247

def latency
  Time.now.to_f - @item['enqueued_at']
end

#queueObject



243
244
245
# File 'lib/sidekiq/api.rb', line 243

def queue
  @queue
end