Class: Forked::ProcessManager
- Inherits:
-
Object
- Object
- Forked::ProcessManager
- Defined in:
- lib/forked/process_manager.rb
Constant Summary collapse
- ON_ERROR =
-> (e, tries) { }
Instance Method Summary collapse
- #fork(name = nil, retry_strategy: ::Forked::RetryStrategies::ExponentialBackoff, on_error: ON_ERROR, &block) ⇒ Object
-
#initialize(process_timeout: 5, logger: Logger.new(STDOUT)) ⇒ ProcessManager
constructor
A new instance of ProcessManager.
- #shutdown ⇒ Object
- #wait_for_shutdown ⇒ Object
- #worker_pids ⇒ Object
Constructor Details
#initialize(process_timeout: 5, logger: Logger.new(STDOUT)) ⇒ ProcessManager
Returns a new instance of ProcessManager.
8 9 10 11 12 |
# File 'lib/forked/process_manager.rb', line 8 def initialize(process_timeout: 5, logger: Logger.new(STDOUT)) @process_timeout = process_timeout @workers = {} @logger = logger end |
Instance Method Details
#fork(name = nil, retry_strategy: ::Forked::RetryStrategies::ExponentialBackoff, on_error: ON_ERROR, &block) ⇒ Object
14 15 16 17 |
# File 'lib/forked/process_manager.rb', line 14 def fork(name = nil, retry_strategy: ::Forked::RetryStrategies::ExponentialBackoff, on_error: ON_ERROR, &block) worker = Worker.new(name, retry_strategy, on_error, block) fork_worker(worker) end |
#shutdown ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/forked/process_manager.rb', line 25 def shutdown @logger.info "Master shutting down" send_signal_to_workers(:TERM) wait_for_workers_until_timeout send_signal_to_workers(:KILL) @logger.info "Master shutdown complete" end |
#wait_for_shutdown ⇒ Object
19 20 21 22 23 |
# File 'lib/forked/process_manager.rb', line 19 def wait_for_shutdown trap_shutdown_signals handle_child_processes shutdown end |
#worker_pids ⇒ Object
33 34 35 |
# File 'lib/forked/process_manager.rb', line 33 def worker_pids @workers.keys end |