Я просто хотел понять лучшие практики для возобновления замедленных рабочих мест с использованием capistrano. У меня есть куча рабочих, которые обрабатывают длинные задания (до 10 минут).
Я столкнулся с двумя сценариями во время развертывания, пока рабочие обрабатывают -
1)
Я останавливаю замедленных рабочих мест перед развертыванием: перезапустите задачу и запустите их снова после задачи deploy: restart.
Но в этом случае он не перезапустит мое приложение до тех пор, пока не завершится задание с задержкой (это может быть нормально, но развертывание крышки script буквально сидит там, пока работа не будет завершена, и она может остановить всех работников) до выполните задачу перезагрузки приложения.
2) Я также попытался остановить/запустить рабочих замедленных работ после задачи перезапуска, но это вызвало всевозможные драмы, в результате которых задачи были бы остановлены, не дожидаясь, пока таблица замедленных сообщений не будет перечислена и назначена работнику с ПИД-кодом, которого не существует!
Любые другие варианты? Или я вынужден ждать, как упоминалось в сценарии 1.
Большое спасибо.
Изменить: Я только что понял со сценарием 1.. он не ждет! Задача остановки будет принудительно убить моего работника, хотя она еще не закончилась!
** [out] delayed_job: trying to stop process with pid 9630...
** [out] delayed_job: process with pid 9630 won't stop, we forcefully kill it...
** [out]
** [out] delayed_job: process with pid 9630 successfully stopped.