Module: MainLoop
- Defined in:
- lib/main_loop.rb,
lib/main_loop/bus.rb,
lib/main_loop/loop.rb,
lib/main_loop/handler.rb,
lib/main_loop/version.rb,
lib/main_loop/dispatcher.rb,
lib/main_loop/thread_handler.rb,
lib/main_loop/process_handler.rb
Overview
MainLoop::ProcessHandler
Управляет субпроцессами через Kernel.fork.
Жизненный цикл процесса
- #run вызывает #start_fork
- #start_fork создает fork с обработкой ошибок
- process выполняется и завершается
- #reap(status) получает статус завершения
- #handle_retry решает, повторить или отправить term
Сигналы для процесса
При #term:
- Если не терминация: Process.kill('TERM', pid) + вызовы @runnable.on_term / @on_term
- Если терминация: Process.kill('KILL', pid)
Пример использования
MainLoop::ProcessHandler.new dispatcher, 'worker', retry_count: 3, logger: logger do
sleep 2
exit! 0
end
См. также
- Handler — базовый класс
- ThreadHandler — обработчики потоков
Defined Under Namespace
Classes: Bus, Dispatcher, Handler, Loop, ProcessHandler, ThreadHandler
Constant Summary collapse
- TERM_SIGNALS =
Сигналы для терминации
%w[INT TERM].freeze
- VERSION =
'0.1.4'.freeze