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
DEFAULT_WORKER_COUNT =
1

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ WorkerPool

Returns a new instance of WorkerPool.



12
13
14
15
16
17
18
19
# File 'lib/delayed_job_worker_pool/worker_pool.rb', line 12

def initialize(options = {})
  @options = options
  @registry = Registry.new
  @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



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/delayed_job_worker_pool/worker_pool.rb', line 21

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

  install_signal_handlers

  if preload_app?
    load_app
    invoke_callback(:after_preload_app)
  end

  log_uninheritable_threads

  fork_workers

  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