Разветвление отложенного задания с сервера приложений?
-
21-09-2019 - |
Вопрос
Вот мой простой идеальный сценарий для случаев, когда я хотел бы запустить отложенное задание:
- Когда запустится первый сервер приложений (будь то через mongrel или passenger), он запустит мои отложенные рабочие задания.
- Когда последний запущенный сервер приложений завершит работу, он уничтожит всех работников отложенных заданий.
Первая часть (начальная) выполнима, хотя я не уверен, каков "правильный" или "наилучший" способ сделать это.Просто сделайте условный (для процесса, который еще не запущен) системный вызов для запуска delayed_job?
Вторая часть (завершающая) - ну, я не уверен, выполнимо это или нет.Определенно понятия не имею, как можно добиться такого эффекта.
Есть какие-нибудь мысли или идеи?
Есть ли другой способ начать / закончить работу с задержкой, который, по вашему мнению, является лучшим?
Побочный вопрос:Основные вопросы, приведенные выше, касаются производственной среды - более сложный случай, поскольку одновременно запущено несколько серверов приложений.Можно ли легко сделать то же самое в среде разработки (где гарантированно будет только один сервер приложений, а не их кластер), разветвляя дочерний процесс для запуска отложенных рабочих заданий, которые всегда будут завершаться при завершении родительского процесса?Как бы я это сделал на твоем месте?
Решение
Вы определенно могли бы завершить процесс с помощью бог.
Просто наблюдайте за процессами приложения, и бог запустит обратный вызов, когда все они будут остановлены.