2012-08-31 31 views
1

我有一个应该调用第三方API的resque作业。我希望这种执行方法至少重试3次。如果在第三次尝试中仍然没有完成,我希望它向我发送一封电子邮件,告诉我出现了问题,并且无法调用API。resque重试几次重试后执行'finally'函数

有没有办法做到这一点使用resque重试

回答

3

你可以使用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 
0

需要的的retry_criteria_check日之前添加@retry_exceptions = []