最多尝试1次的作业?
我有一个我异步运行的方法
User.delay(queue: 'users').grab_third_party_info(user.id)
如果失败,我希望它不会重试。 我的默认重试次数是3次,这是我无法改变的。 我只想让这只能尝试一次。 以下似乎不起作用:
User.delay(queue: 'users', attempts: 3).grab_third_party_info(user.id)
有任何想法吗?
这不是我最喜欢的解决方案,但是如果您需要使用延迟方法,您可以设置尝试次数:减少最大尝试次数。 所以在你的情况下,以下应该工作
User.delay(queue: 'users', attempts: 2).grab_third_party_info(user.id)
更好的是,你可以通过使用Delayed :: Worker.max_attempts来使它更安全
User.delay(queue: 'users', attempts: Delayed::Worker.max_attempts-1).grab_third_party_info(user.id)
这会将它输入到您的delayed_jobs表中,就好像它已经运行了两次,所以当它再次运行时,它将处于最大尝试次数。
从https://github.com/collectiveidea/delayed_job#custom-jobs
要设置每个作业的最大尝试次数来覆盖Delayed :: Worker.max_attempts,您可以在作业上定义一个max_attempts方法
NewsletterJob = Struct.new(:text, :emails) do
def perform
emails.each { |e| NewsletterMailer.deliver_text_to_email(text, e) }
end
def max_attempts
3
end
end
这对你有帮助吗?
链接地址: http://www.djcxy.com/p/84759.html