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