Class: Sidekiq::Processor
- Inherits:
-
Object
- Object
- Sidekiq::Processor
- 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 collapse
- STATS_TIMEOUT =
180 * 24 * 60 * 60
Constants included from Util
Instance Attribute Summary collapse
-
#proxy_id ⇒ Object
Returns the value of attribute proxy_id.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(boss) ⇒ Processor
constructor
A new instance of Processor.
- #inspect ⇒ Object
- #process(work) ⇒ Object
Methods included from Actor
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 |
Instance Attribute Details
#proxy_id ⇒ Object
Returns the value of attribute proxy_id.
27 28 29 |
# File 'lib/sidekiq/processor.rb', line 27 def proxy_id @proxy_id end |
Class Method Details
.default_middleware ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/sidekiq/processor.rb', line 19 def self.default_middleware Middleware::Chain.new do |m| m.add Middleware::Server::Logging m.add Middleware::Server::RetryJobs m.add Middleware::Server::ActiveRecord end end |
Instance Method Details
#inspect ⇒ Object
65 66 67 |
# File 'lib/sidekiq/processor.rb', line 65 def inspect "<Processor##{object_id.to_s(16)}>" 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 57 58 59 60 61 62 63 |
# File 'lib/sidekiq/processor.rb', line 33 def process(work) msgstr = work. queue = work.queue_name do_defer do @boss.async.real_thread(proxy_id, Thread.current) 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 Sidekiq::Shutdown # Had to force kill this job because it didn't finish # within the timeout. rescue Exception => ex handle_exception(ex, msg || { :message => msgstr }) raise ensure work.acknowledge end end @boss.async.processor_done(current_actor) end |