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