как повторить задание sidekiq без исключения? - PullRequest
0 голосов
/ 21 марта 2019

Простые вещи, мне нужен способ повторить работу, БЕЗ ПОВЫШЕНИЯ ИСКЛЮЧЕНИЯ. Я знаю, что могу использовать что-то вроде

def perform
    if stuff_happening
        perform_in(2.min)
        return
    end
end

и это нормально, но есть одна проблема: количество повторов. потенциально, с stuff_happening каждый раз, эта работа будет продолжать планировать неопределенно долго? Есть ли способ убедиться, что он будет запланирован только определенное количество раз, а затем остановится?

1 Ответ

0 голосов
/ 21 марта 2019

Sidenote: мы используем 2 пробела для отступа в Ruby.

Вам необходимо передать состояние (количество повторных попыток уже произошло) через:

def perform(attempts_left = 10)
  if stuff_happening && attempts_left > 0
    perform_in(2.min, attempts_left - 1)
    return
  end
end
...