File: spawn_worker_script.rb

package info (click to toggle)
ruby-serverengine 2.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 404 kB
  • sloc: ruby: 3,444; makefile: 3
file content (38 lines) | stat: -rw-r--r-- 1,365 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$LOAD_PATH.unshift File.expand_path("../..", __FILE__)

require 'serverengine'
require 'json'

begin
  conf = JSON.parse(ENV['SERVER_ENGINE_CONFIG'], symbolize_names: true)
  logger = ServerEngine::DaemonLogger.new(conf[:log] || STDOUT, conf)
  logger.info "Starting to run Worker."
  socket_manager = ServerEngine::SocketManager::Client.new(ENV['SERVER_ENGINE_SOCKET_MANAGER_PATH'])
  exit_with_code = ENV.key?('EXIT_WITH_CODE') ? ENV['EXIT_WITH_CODE'].to_i : nil
  exit_at_seconds = ENV.key?('EXIT_AT_SECONDS') ? ENV['EXIT_AT_SECONDS'].to_i : nil
  exit_at_random = ENV.key?('EXIT_AT_RANDOM')
  stop_at = if exit_with_code
              stop_seconds = exit_at_random ? rand(exit_at_seconds) : exit_at_seconds
              logger.info "Stop #{stop_seconds} seconds later with code #{exit_with_code}."
              Time.now + stop_seconds
            else
              nil
            end

  @stop = false
  trap(:SIGTERM) { @stop = true }
  trap(:SIGINT) { @stop = true }

  _listen_sock = socket_manager.listen_tcp('0.0.0.0', 12345)
  until @stop
    if stop_at && Time.now >= stop_at
      logger.info "Exitting with code #{exit_with_code}"
      exit! exit_with_code
    end
    logger.info 'Awesome work!'
    sleep 1
  end
  logger.info 'Exitting'
rescue Exception => e
  logger.error "unexpected error in spawn worker, class #{e.class}: #{e.message}"
end