Использование Бога (godrb.com) Я пытаюсь написать рецепт, который запускает новый процесс независимо от состояния существующего процесса при развертывании приложения.Существующий процесс должен иметь длительное время ожидания для завершения текущих задач, но новый процесс должен начаться немедленно с использованием только что развернутого кода.
То, что у меня сейчас есть, устанавливает время ожидания 300 секунд на остановку.но ждет все 300 секунд, прежде чем запускать новый процесс.
God.watch do |w|
w.name = "sidekiq"
w.interval = 30.seconds
w.start = "bash -lc 'cd /path/to/current && ./bin/sidekiq -P /path/to/shared/pids/sidekiq.pid'"
w.stop = "bash -lc 'kill -USR1 `cat /path/to/shared/pids/sidekiq.pid`'"
w.stop_timeout = 300.seconds
w.pid_file = "/path/to/shared/pids/sidekiq.pid"
w.behavior(:clean_pid_file)
end
В этом случае kill -USR1
указывает Sidekiq завершить обработку любых текущих заданий, но больше не выполнять работу.
Я хотел бы сохранить 300-секундный тайм-аут на существующем работнике, но запустить новый процесс, как только будет запущена команда kill.