我有一个resque作业,应该调用第三方API。我希望此执行方法至少重试3次。如果它在第三次尝试时仍然没有通过,我希望它给我发一封电子邮件,告诉我出了问题,无法调用API。
有没有一种方法可以使用resque重试
您可以使用自定义重试标准来检查resque重试为您重试的次数,如果次数太大,则执行不同的操作。类似这样的东西:
class APIWorker
extend Resque::Plugins::Retry
@queue = :api_worker_queue
retry_criteria_check do |exception, *args|
if retry_attempt > 3
send_email
false # don't retry anymore
else
true # continue retrying
end
end
def self.perform(job_id)
do_api_stuff
end
end
需要在retry_criteria_check de 之前添加@retry_exceptions=[]
如果使用带有Resque的ActiveJob,则可以使用ActiveJob的retry_on
功能。
class RemoteServiceJob < ActiveJob::Base
retry_on(SomeError) do |job, error|
# your custom logic
end
end