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