Спасатель не реагирует на сигналы

Я использую Resque версии 1.25.2 в приложении Rails.

Я попытался вызвать методы экземпляра pause_processing и его обратный unpause_processing класса Resque::Worker для всех рабочих процессов, которые я получил через Resque.workers. Однако рабочие по-прежнему продолжали обрабатывать новые задания, динамически добавляемые в любую очередь. При проверке состояния через instance.paused? каждый воркер вернул true.

Не уверен, смогу ли я действительно контролировать рабочих, работающих в фоновом режиме.

Насколько я понимаю, pause_processing, unpause_processing и shutdown делают то же самое, что и отправка сигналов USR2 CONT и KILL рабочим Resque.

Я пропустил что-то тривиальное или есть другой способ управлять рабочими.


person user2512324    schedule 24.04.2014    source источник
comment
Может ли кто-нибудь хотя бы указать мне правильное направление?   -  person user2512324    schedule 26.04.2014


Ответы (1)


Это связано с тем, что вы вызываете этот метод и изменяете состояние совершенно другого экземпляра рабочего процесса. Поскольку вы можете видеть все он устанавливает значение переменной экземпляра. Когда вы вызываете Resque.workers, вы получаете экземпляры всех воркеров, но не экземпляр работающего воркера в другом процессе. Resque не позволяет удаленно изменять состояние работающего воркера. Вы должны взаимодействовать с ним по сигналам, если хотите изменить состояние Resque worker извне. Если вы просто вызываете методы, вы не отправляете сигнал.

person Sirupsen    schedule 04.05.2014