2013-07-26 1 views
0

Я реализую resque в этом проекте, где мне нужна функция убивать все, что попадает в очередь, чтобы перескакивать. Итак, я видел, что есть метод dequeuing, который удалит задания из очереди. Но, если эта работа уже запущена и в настоящее время запущена, делает dequeuing убить процесс?Resque: Удаляет ли удаление из процесса процесс?

Также важно: если задание будет удалено, я получу дескриптор, где я могу что-то сделать, или это исключение?

ответ

0

Ответ на этот вопрос был фактически использован одним из многих расширений для драгоценного камня resque, называемого resque-status. Это обрабатывает экземпляры работников, присваивает каждому из них уникальный идентификатор (который я могу использовать для их идентификации, функция, которая мне больше всего нужна) и предоставляет мне метод kill, который вызывается на задании, что гарантирует, что задание будет обрабатываться сигнал kill в следующий раз, когда я вызываю определенный метод их API (не точно исключение kill и assign, но это лучше, чем ничего).

0

Насколько я знаю, что это don't killprocess его просто удалить задание из очереди, если она существует, проверьте here

Но если вы хотите добиться убивая работу, возможно, тогда вы должны использовать различный сигнал, Resque обеспечивают

Вот их список

Resque workers respond to a few different signals: 

QUIT - Wait for child to finish processing then exit 
TERM/INT - Immediately kill child then exit 
USR1 - Immediately kill child but don't exit 
USR2 - Don't start to process any new jobs 
CONT - Start to process new jobs again after a USR2 

в вашем случае, если бы USR1

Надеюсь, что эта помощь

+0

Это кажется приятным, но для этого мне нужен разветвленный pid. Где я могу найти его? он хранится в redis? – ChuckE

+0

@ChuckE Ну хорошо, нет простого способа, потому что resque doesnot сделать это AFAIK Я могу ошибаться, хотя 1) 'ps aux | grep [r] esque '2) Сделайте' Process.pid' внутри вашего кода работы и сохраните их в redis make sense – Viren

+0

Я не уверен в этом. resque вилки многих процессов, что означает, что в какой-то определенной точке у меня может быть много процессов, которые неожиданно прекратятся. Resque.dequeue позволяет мне удалить некоторые задания очереди по классу и аргументам. Я хотел бы сделать то же самое с процессами. Я предполагаю, что это имеет больше смысла, когда внутри библиотеки, если это еще не так, я, вероятно, предлагаю эту функцию. – ChuckE