Class: Remon::CheckRunner
- Inherits:
-
Object
- Object
- Remon::CheckRunner
- Includes:
- Logger
- Defined in:
- lib/remon/check_runner.rb
Instance Method Summary collapse
-
#initialize(task_queue:, num_workers:, result_queue:) ⇒ CheckRunner
constructor
A new instance of CheckRunner.
- #new_worker ⇒ Object
- #process_job ⇒ Object
- #run_job(j) ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
Methods included from Logger
Constructor Details
#initialize(task_queue:, num_workers:, result_queue:) ⇒ CheckRunner
Returns a new instance of CheckRunner.
7 8 9 10 11 12 |
# File 'lib/remon/check_runner.rb', line 7 def initialize(task_queue:, num_workers:, result_queue:) @task_queue = task_queue @num_workers = num_workers @result_queue = result_queue @workers = [] end |
Instance Method Details
#new_worker ⇒ Object
23 24 25 26 27 |
# File 'lib/remon/check_runner.rb', line 23 def new_worker Thread.new do loop { process_job } end end |
#process_job ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/remon/check_runner.rb', line 29 def process_job j = @task_queue.pop logger.debug "running #{j}" if logger.debug? result = run_job j case result when Array result.each { |r| @result_queue << r if r} else @result_queue << result if result end rescue => e logger.error "error while running job #{e.}" end |
#run_job(j) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/remon/check_runner.rb', line 44 def run_job(j) if @num_workers > 1 j.run_mutex else j.run end end |
#start ⇒ Object
14 15 16 17 |
# File 'lib/remon/check_runner.rb', line 14 def start logger.debug "starting runners" @num_workers.times { @workers << new_worker } end |
#stop ⇒ Object
19 20 21 |
# File 'lib/remon/check_runner.rb', line 19 def stop @workers.each { |t| Thread.kill t if (t && t.alive?)} end |