我有一个应该调用第三方API的resque作业。我希望这种执行方法至少重试3次。如果在第三次尝试中仍然没有完成,我希望它向我发送一封电子邮件,告诉我出现了问题,并且无法调用API。resque重试几次重试后执行'finally'函数
有没有办法做到这一点使用resque重试
我有一个应该调用第三方API的resque作业。我希望这种执行方法至少重试3次。如果在第三次尝试中仍然没有完成,我希望它向我发送一封电子邮件,告诉我出现了问题,并且无法调用API。resque重试几次重试后执行'finally'函数
有没有办法做到这一点使用resque重试
你可以使用custom retry criteria检查多少次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日之前添加@retry_exceptions = []