Sha256: 83ea352a8dd86a30ade25276f4f3481b8f301b398f5432f89477358df056e07f
Contents?: true
Size: 1.22 KB
Versions: 3
Compression:
Stored size: 1.22 KB
Contents
module Loops class WorkerPool attr_reader :name def initialize(name, pm, engine, &blk) @name = name @pm = pm @worker_block = blk @engine = engine @workers = [] end def logger @pm.logger end def shutdown? @pm.shutdown? end def start_workers(number) logger.info("Creating #{number} workers for #{name} loop...") number.times do |i| @workers << Worker.new(name, @pm, @engine, :id => i, :count => number, &@worker_block) end end def check_workers logger.debug("Checking loop #{name} workers...") @workers.each do |worker| next if worker.running? || worker.shutdown? logger.info("Worker #{worker.name} is not running. Restart!") worker.run end end def wait_workers running = 0 @workers.each do |worker| next unless worker.running? running += 1 logger.info("Worker #{name} is still running (#{worker.pid})") end return running end def stop_workers(force) logger.info("Stopping loop #{name} workers...") @workers.each do |worker| next unless worker.running? worker.stop(force) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
qik-loops-2.1.4 | lib/loops/worker_pool.rb |
qik-loops-2.1.3 | lib/loops/worker_pool.rb |
qik-loops-2.1.0 | lib/loops/worker_pool.rb |