Как обрабатывать исключения из вложенных заданий? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть класс Sidekiq / ActiveJob, который выглядит следующим образом:

class ParentJob < ApplicationJob
  queue_as :default

  def perform(user)
    ChildJobA.perform_now(user)
    ChildJobB.perform_now(user)
    ChildJobC.perform_now(user)
    ...
  rescue CustomError => e
    handle_error(e)
  end
end

Родительское задание вызывается через ParentJob.perform_later(user).

Дочерние задания могут вызывать CustomError. Я думал, что смогу спасти тех, кто на родительской работе - но мой блок rescue никогда не вызывается. Кажется, что дочернее задание просто завершается, и управление не переходит к родителю.

Есть ли способ спасения пользовательских ошибок в родительском задании или мне нужно повторять один и тот же обработчик ошибок в каждом дочернем задании?

1 Ответ

1 голос
/ 22 февраля 2020

Назовите его как обычный Ruby код и удалите ActiveJob с картинки:

ChildJobA.new.perform(user)
ChildJobB.new.perform(user)
ChildJobC.new.perform(user)

Это должно подняться как обычно.

...