Повторная попытка активного задания, неподдерживаемый тип аргумента: время - PullRequest
0 голосов
/ 13 января 2020
class SendTrackerToShipupJob < ApplicationJob
  queue_as :default
  retry_on StandardError, wait: 5.seconds, attempts: 3

  def perform(tracker)
    response = Shipup.new().sendTracker(tracker)
    if response.code != 201
      puts response.code, response.message
      raise "Couldn\'t send tracker to Shipup"
      return
    end
    shipment = Shipment.find_by(tracking_code: tracker[:tracking_number])
    shipment.sent_to_shipup = true
    shipment.save
  end
end

Я намеренно заставляю задание не проверять, запускается ли оно снова 3 раза каждые 5 секунд.

SendTrackerToShipupJob.set(wait: 5.minutes).perform_later(...)

Но вот мой журнал вывода:

3: 59: 21 PM web.1 | Повторная попытка SendTrackerToShipupJob через 3 секунды из-за ошибки StandardError. Первоначальное исключение было ноль. 15:59:21 вэб.1 | Неподдерживаемый тип аргумента: Время

И он больше не сработает. Есть идеи?

1 Ответ

0 голосов
/ 14 января 2020

Вероятно, это связано с тем, что вы анализируете дату в объекте JSON, который передаете в качестве аргумента задания.

В моем примере:

SendTrackerToShipupJob.set(wait: 5.minutes).perform_later({
    [...]
    created_at: ...
})

Атрибут созданный_катом вызывает проблему. Чтобы это исправить, преобразуйте ваш JSON в га sh:

SendTrackerToShipupJob.set(wait: 5.minutes).perform_later({
    [...]
    :created_at => ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...