我希望在对Sidekiq worker作业进行重试之前(或何时)运行回调。我们将作业的状态存储为属性(排队,执行,完成等),并且重试不会自动重置此状态。我需要一种方法来运行回调,以便在重试作业进入队列之前将重试作业的状态设置回queued
。例如:
before_retry do
self.status = "queued"
end
我阅读了另一篇文章(Sidekiq Pro callback when batch is retried?),该文章建议使用某种服务器中间件来检测重试并运行回调,但是我不完全知道这种方法是否可行,因为我觉得到那时重试已经在排队了任何中间件都能抓住它。还有其他选择吗?预先感谢!
答案 0 :(得分:1)
在rescue
内的perform
起作用吗?
def perform
...
rescue YourException
self.status = "queued"
raise
end
raise
再次执行,以便重试作业。