Class: DelayedJobWorkerPool::WorkerPool

Inherits:
Object
  • Object
show all
Defined in:
lib/delayed_job_worker_pool/worker_pool.rb

Constant Summary collapse

SIGNALS =
['TERM', 'INT'].map(&:freeze).freeze

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ WorkerPool

Returns a new instance of WorkerPool.



5
6
7
8
9
10
11
12
# File 'lib/delayed_job_worker_pool/worker_pool.rb', line 5

def initialize(options = {})
  @options = options
  @worker_pids = []
  @pending_signals = []
  @pending_signal_read_pipe, @pending_signal_write_pipe = create_pipe(inheritable: false)
  @master_alive_read_pipe, @master_alive_write_pipe = create_pipe(inheritable: true)
  self.shutting_down = false
end

Instance Method Details

#runObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/delayed_job_worker_pool/worker_pool.rb', line 14

def run
  log("Starting master #{Process.pid}")

  install_signal_handlers

  if preload_app?
    load_app
    invoke_callback(:after_preload_app)
  end

  log_uninheritable_threads

  num_workers.times { fork_worker }

  monitor_workers

  exit
ensure
  master_alive_write_pipe.close if master_alive_write_pipe
  master_alive_read_pipe.close if master_alive_read_pipe
end