Вопрос

Вот мой простой идеальный сценарий для случаев, когда я хотел бы запустить отложенное задание:

  • Когда запустится первый сервер приложений (будь то через mongrel или passenger), он запустит мои отложенные рабочие задания.
  • Когда последний запущенный сервер приложений завершит работу, он уничтожит всех работников отложенных заданий.

Первая часть (начальная) выполнима, хотя я не уверен, каков "правильный" или "наилучший" способ сделать это.Просто сделайте условный (для процесса, который еще не запущен) системный вызов для запуска delayed_job?

Вторая часть (завершающая) - ну, я не уверен, выполнимо это или нет.Определенно понятия не имею, как можно добиться такого эффекта.

Есть какие-нибудь мысли или идеи?

Есть ли другой способ начать / закончить работу с задержкой, который, по вашему мнению, является лучшим?

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

Это было полезно?

Решение

Вы определенно могли бы завершить процесс с помощью бог.

Просто наблюдайте за процессами приложения, и бог запустит обратный вызов, когда все они будут остановлены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top