Class: Sidekiq::Processor
- Inherits:
-
Object
- Object
- Sidekiq::Processor
- Includes:
- Celluloid, Util
- Defined in:
- lib/sidekiq/processor.rb
Overview
The Processor receives a message from the Manager and actually processes it. It instantiates the worker, runs the middleware chain and then calls Sidekiq::Worker#perform.
Constant Summary
Constants included from Util
Class Method Summary collapse
-
.default_middleware ⇒ Object
exclusive :process.
Instance Method Summary collapse
-
#initialize(boss) ⇒ Processor
constructor
A new instance of Processor.
- #inspect ⇒ Object
- #process(work) ⇒ Object
- #to_s ⇒ Object
Methods included from Util
#hostname, #logger, #process_id, #redis, #watchdog
Methods included from ExceptionHandler
Constructor Details
#initialize(boss) ⇒ Processor
Returns a new instance of Processor.
29 30 31 |
# File 'lib/sidekiq/processor.rb', line 29 def initialize(boss) @boss = boss end |
Class Method Details
.default_middleware ⇒ Object
exclusive :process
20 21 22 23 24 25 26 27 |
# File 'lib/sidekiq/processor.rb', line 20 def self.default_middleware Middleware::Chain.new do |m| m.add Middleware::Server::Logging m.add Middleware::Server::RetryJobs m.add Middleware::Server::ActiveRecord m.add Middleware::Server::Timeout end end |
Instance Method Details
#inspect ⇒ Object
59 60 61 |
# File 'lib/sidekiq/processor.rb', line 59 def inspect "#<Processor #{to_s}>" end |
#process(work) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/sidekiq/processor.rb', line 33 def process(work) msgstr = work. queue = work.queue_name defer do begin msg = Sidekiq.load_json(msgstr) klass = msg['class'].constantize worker = klass.new worker.jid = msg['jid'] stats(worker, msg, queue) do Sidekiq.server_middleware.invoke(worker, msg, queue) do worker.perform(*cloned(msg['args'])) end end rescue Exception => ex handle_exception(ex, msg || { :message => msgstr }) raise ensure work.acknowledge end end @boss.async.processor_done(current_actor) end |
#to_s ⇒ Object
63 64 65 |
# File 'lib/sidekiq/processor.rb', line 63 def to_s @str ||= "#{hostname}:#{process_id}-#{Thread.current.object_id}:default" end |