class PerfectQueue::Multiprocess::ChildProcess
Constants
- HEARTBEAT_PACKET
Public Class Methods
new(runner, processor_id, config, wpipe)
click to toggle source
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 27 def initialize(runner, processor_id, config, wpipe) @wpipe = wpipe @wpipe.sync = true @request_per_child = 0 super(runner, processor_id, config) @sig = install_signal_handlers end
run(runner, processor_id, config, wpipe)
click to toggle source
# File lib/perfectqueue/multiprocess/child_process.rb, line 23 def self.run(runner, processor_id, config, wpipe) new(runner, processor_id, config, wpipe).run end
Public Instance Methods
child_heartbeat()
click to toggle source
override
# File lib/perfectqueue/multiprocess/child_process.rb, line 63 def child_heartbeat @wpipe.write HEARTBEAT_PACKET rescue @log.error "Parent process unexpectedly died: #{$!}" force_stop end
force_stop()
click to toggle source
override
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 71 def force_stop super Process.kill(:KILL, Process.pid) exit! 137 end
join()
click to toggle source
override
# File lib/perfectqueue/multiprocess/child_process.rb, line 48 def join # do nothing end
keepalive()
click to toggle source
override
# File lib/perfectqueue/multiprocess/child_process.rb, line 53 def keepalive # do nothing end
logrotated()
click to toggle source
override
# File lib/perfectqueue/multiprocess/child_process.rb, line 58 def logrotated @log.reopen! end
process(task)
click to toggle source
override
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 86 def process(task) super if @max_request_per_child @request_per_child += 1 if @request_per_child > @max_request_per_child stop(false) end end end
restart(immediate, config)
click to toggle source
override
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 80 def restart(immediate, config) @max_request_per_child = config[:max_request_per_child] || nil super end
run()
click to toggle source
override
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 36 def run super @sig.stop end
stop(immediate)
click to toggle source
override
Calls superclass method
# File lib/perfectqueue/multiprocess/child_process.rb, line 42 def stop(immediate) @log.info "Exiting processor id=#{@processor_id} pid=#{Process.pid}" super end
Private Instance Methods
install_signal_handlers()
click to toggle source
# File lib/perfectqueue/multiprocess/child_process.rb, line 97 def install_signal_handlers s = self SignalThread.new do |st| st.trap :TERM do s.stop(false) end st.trap :INT do s.stop(false) end st.trap :QUIT do s.stop(true) end st.trap :USR1 do s.stop(false) end st.trap :HUP do s.stop(true) end st.trap :CONT do s.stop(false) end st.trap :WINCH do s.stop(true) end st.trap :USR2 do s.logrotated end trap :CHLD, "SIG_DFL" end end