ActiveJob rescue_from returning success without raise and fa



我试图在ApplicationJob中捕获一些错误,但我不希望这些错误引发异常(并返回失败的作业执行(,但我希望忽略某些错误(基本上返回成功(。我可以在每个作业中单独使用常规begin-rescue来实现这一点,但我想在多个作业之间共享这种救援。

问题是rescue_from捕获了错误,但无论如何都会引发错误,并且作业在执行时失败。

application_job.rb

class ApplicationJob < ActiveJob::Base
rescue_from StandardError do |exception|
puts "Rescuing"
true
end
end

test_job.rb

class TestJob < ApplicationJob

def perform(*args)
raise ActiveResource::ResourceNotFound, "Wow"
end
end

执行作业时记录:

Performing TestJob (Job ID: fd58cbd5-eb03-4fdc-8301-1ea70a9b1d8b) from Async(default)
Error performing TestJob (Job ID: fd58cbd5-eb03-4fdc-8301-1ea70a9b1d8b) from Async(default) in 1.03ms: ActiveResource::ResourceNotFound (Failed.):
...
.../.rvm/rubies/ruby-2.4.4/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
-e:1:in `<main>'
Rescuing
=> #<ActiveResource::ResourceNotFound: Failed.>

这个问题已经存在好几天了,但还没有得到回答。

在定义救援之前,您必须在作业类中include ActiveSupport::Rescuable

另请参阅与此主题相关的另一个问题:rescue_from not working in ActiveJob

最新更新