Подтвердить что ты не робот

Node.js Kue, как перезапустить неудачные задания

Я использую kue для отложенных заданий в моем приложении node.js.

У меня есть некоторые проблемы, чтобы выяснить, как я могу перезапустить задание с помощью API kue без необходимости переместить идентификатор задания вручную из списка неудачных заданий в список неактивных заданий с помощью команд redis.

Возможно ли это с помощью kue?

Я не хочу устанавливать фиксированное количество попыток повтора - я просто хочу повторить определенные задания.

Также приветствуются предложения по ухоженной альтернативе kue.

4b9b3361

Ответ 1

Я не знаю, работает ли это, но вы можете попробовать reset состояние задания для активного и снова сохранить задание:

job.on('failed', function() {
  job.state('inactive').save();

Изменить: состояние настройки неактивно правильно перезапустит задачу.

Ответ 2

Это также можно сделать с помощью событий уровня очереди.

queue.on('job failed', function(id, result) {
    kue.Job.get(id, function(err, job) {
        if (!err && shouldRetry(job))
            job.state('inactive').save();
    });
});

Таким образом, вам не нужно делать все задания, которые вы хотите повторить. Вместо этого вы можете отфильтровать его в событии уровня очереди.

Ответ 3

см. "Попытки сбоя" в официальных документах

По умолчанию задания имеют только одну попытку, то есть когда они не работают, они отмечены как провал и остаются таким образом, пока вы не вмешаетесь. Однако Kue позволяет указать это, что важно для рабочих мест например, передача электронной почты, которая после сбоя может обычно повторять без проблем. Для этого вызовите метод .attempts() с номером.

 queue.create('email', {
     title: 'welcome email for tj'
   , to: '[email protected]'
   , template: 'welcome-email'
 }).priority('high').attempts(5).save();

ссылка: попытки отказа