class Workerholic::Manager
Handles polling from Redis and hands job to worker
Attributes
logger[R]
scheduler[R]
worker_balancer[R]
workers[R]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/workerholic/manager.rb, line 6 def initialize(opts = {}) @workers = [] Workerholic.workers_count.times { @workers << Worker.new } @scheduler = JobScheduler.new(sorted_set: opts[:sorted_set]) @worker_balancer = WorkerBalancer.new(workers: workers, auto_balance: opts[:auto_balance]) @logger = LogManager.new end
Public Instance Methods
shutdown()
click to toggle source
# File lib/workerholic/manager.rb, line 29 def shutdown workers.each(&:kill) worker_balancer.kill scheduler.kill Starter.kill_memory_tracker_thread workers.each(&:join) scheduler.join end
start()
click to toggle source
# File lib/workerholic/manager.rb, line 16 def start worker_balancer.start workers.each(&:work) scheduler.start sleep rescue SystemExit, Interrupt logger.info("Workerholic's process #{Process.pid} is gracefully shutting down, letting workers finish their current jobs...") shutdown exit end