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.

Жизненный цикл процесса

  1. #run вызывает #start_fork

  2. #start_fork создает fork с обработкой ошибок

  3. process выполняется и завершается

  4. #reap(status) получает статус завершения

  5. #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

См. также

Defined Under Namespace

Classes: Bus, Dispatcher, Handler, Loop, ProcessHandler, ThreadHandler

Constant Summary collapse

TERM_SIGNALS =

Сигналы для терминации

Returns:

  • (Array<String>)
%w[INT TERM].freeze
VERSION =
'0.1.4'.freeze