Демон Ruby с чистым завершением работы

Я хотел бы создать демона ruby, который корректно завершал бы свою работу с помощью команды kill. Я хотел бы добавить ловушку сигнала, которая будет ждать до завершения #code, выполнение которого может занять некоторое время , прежде чем завершиться. Как мне добавить это к чему-то вроде этого:

pid = fork do
   pid_file = "/tmp/pids/daemon6.pid"
   File.open(pid, 'w'){ |f| f.write(Process.pid) }
   loop do
      begin
         #code that could take some time to run
      rescue Exception => e
         Notifier.deliver_daemon_rescued_notification(e)
      end
      sleep(10)
   end
end
Process.detach pid

Кроме того, было бы лучше иметь это в отдельном сценарии, например, в отдельном сценарии уничтожения, вместо того, чтобы иметь его как часть кода демона? Как что-то monit или Бог призвал бы остановить это?

Я ценю любые предложения.

7
задан octosquidopus 8 December 2014 в 21:34
поделиться