28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/qs/daemon.rb', line 28
def initialize
config = self.class.config
begin
config.validate!
rescue InvalidError => exception
exception.set_backtrace(caller)
raise exception
end
Qs.init
@daemon_data = DaemonData.new({
:name => config.name,
:pid_file => config.pid_file,
:shutdown_timeout => config.shutdown_timeout,
:worker_class => config.worker_class,
:worker_params => config.worker_params,
:num_workers => config.num_workers,
:error_procs => config.error_procs,
:logger => config.logger,
:queues => config.queues,
:verbose_logging => config.verbose_logging,
:routes => config.routes
})
@signals_redis_key = "signals:#{self.daemon_data.name}-" \
"#{Socket.gethostname}-#{::Process.pid}"
@thread = nil
@worker_available = WorkerAvailable.new
@state = State.new(:stop)
@client = QsClient.new(Qs.redis_connect_hash.merge({
:timeout => 1,
:size => self.daemon_data.num_workers + 1
}))
@worker_pool = DatWorkerPool.new(self.daemon_data.worker_class, {
:num_workers => self.daemon_data.num_workers,
:logger => self.daemon_data.dwp_logger,
:worker_params => self.daemon_data.worker_params.merge({
:qs_daemon_data => self.daemon_data,
:qs_client => @client,
:qs_worker_available => @worker_available,
:qs_logger => self.logger
})
})
end
|