如何处理嵌套作业的异常



我有一个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块从未被调用。似乎子作业只是简单地退出,控制权不会传递回父作业。

有没有办法挽救父作业中的自定义错误,或者我必须在每个子作业中重复相同的错误处理程序?

像普通Ruby代码一样调用它,并从图片中删除ActiveJob:

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

这个数字应该会正常上升。

最新更新