class Delayed::Master
Constants
- VERSION
Attributes
config[R]
logger[R]
workers[R]
Public Class Methods
new(argv)
click to toggle source
# File lib/delayed/master.rb, line 14 def initialize(argv) @config = Command.new(argv).config @logger = setup_logger(@config.log_file, @config.log_level) @workers = [] @signaler = Signaler.new(self) @monitoring = Monitoring.new(self) end
Public Instance Methods
prepared?()
click to toggle source
# File lib/delayed/master.rb, line 38 def prepared? @prepared end
quit()
click to toggle source
# File lib/delayed/master.rb, line 42 def quit @signaler.dispatch(:KILL) @stop = true end
reopen_files()
click to toggle source
# File lib/delayed/master.rb, line 56 def reopen_files @signaler.dispatch(:USR1) @logger.info "reopening files..." Util::FileReopener.reopen @logger.info "reopened" end
restart()
click to toggle source
# File lib/delayed/master.rb, line 63 def restart @signaler.dispatch(:USR2) @logger.info "restarting master..." exec(*([$0] + ARGV)) end
run()
click to toggle source
# File lib/delayed/master.rb, line 23 def run print_config daemonize if @config.daemon @logger.info "started master #{Process.pid}".tap { |msg| puts msg } handle_pid_file do @signaler.register @prepared = true @monitoring.monitor_while { stop? } end @logger.info "shut down master" end
stop()
click to toggle source
# File lib/delayed/master.rb, line 47 def stop @signaler.dispatch(:TERM) @stop = true end
stop?()
click to toggle source
# File lib/delayed/master.rb, line 52 def stop? @stop == true end
Private Instance Methods
create_pid_file()
click to toggle source
# File lib/delayed/master.rb, line 88 def create_pid_file FileUtils.mkdir_p(File.dirname(@config.pid_file)) File.write(@config.pid_file, Process.pid) end
daemonize()
click to toggle source
# File lib/delayed/master.rb, line 78 def daemonize Process.daemon(true) end
handle_pid_file() { || ... }
click to toggle source
# File lib/delayed/master.rb, line 82 def handle_pid_file create_pid_file yield remove_pid_file end
print_config()
click to toggle source
# File lib/delayed/master.rb, line 97 def print_config @logger.info "databases: #{@config.databases.join(', ')}" if @config.databases @config.worker_settings.each do |setting| message = "worker[#{setting.id}]: #{setting.count} processes" message << " (#{setting.queues.join(', ')})" if setting.queues.respond_to?(:join) @logger.info message end end
remove_pid_file()
click to toggle source
# File lib/delayed/master.rb, line 93 def remove_pid_file File.delete(@config.pid_file) if File.exist?(@config.pid_file) end
setup_logger(log_file, log_level)
click to toggle source
# File lib/delayed/master.rb, line 71 def setup_logger(log_file, log_level) FileUtils.mkdir_p(File.dirname(log_file)) if log_file.is_a?(String) logger = Logger.new(log_file) logger.level = log_level logger end