Class: Seijaku::Scheduler
- Inherits:
-
Object
- Object
- Seijaku::Scheduler
- Defined in:
- lib/seijaku/scheduler.rb
Instance Method Summary collapse
-
#initialize(scheduler, logger) ⇒ Scheduler
constructor
A new instance of Scheduler.
- #monitor! ⇒ Object
- #soft_exit! ⇒ Object
Constructor Details
#initialize(scheduler, logger) ⇒ Scheduler
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/seijaku/scheduler.rb', line 5 def initialize(scheduler, logger) @name = scheduler.fetch("name", nil) @logger = logger @scheduler_executors = scheduler.fetch("payloads", []).map do |payload_spec| payload = File.read(payload_spec["payload"]).then do |data| YAML.safe_load(data).then do |data| Payload.new(data, logger) end end SchedulerExecutor.new(payload, payload_spec, logger) end end |
Instance Method Details
#monitor! ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/seijaku/scheduler.rb', line 19 def monitor! thd = [] @scheduler_executors.each do |scheduler_executor| @logger.info "scheduling... #{scheduler_executor.name}" thd << Thread.new do scheduler_executor.execute! end end thd.each &:join end |
#soft_exit! ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/seijaku/scheduler.rb', line 31 def soft_exit! @logger.info "Soft exit asked by user, waiting for payloads to stop naturally..." thd = [] @scheduler_executors.each do |scheduler_executor| thd << Thread.new do scheduler_executor.status = :exiting while scheduler_executor.status != :exited @logger.info "#{scheduler_executor.name}: still waiting..." sleep 1 end @logger.info "#{scheduler_executor.name}: stopped gracefully" end end thd.each &:join end |