如何判断Sidekiq中正在执行的任务是首次运行还是第n次重试?
判断Sidekiq Worker任务是首次执行还是重试执行
当然可以判断,Sidekiq内置了相关机制帮你区分任务的执行状态:
- 直接在Worker的
perform方法里添加retry_count参数,给它设默认值0。任务首次执行时这个值就是0,当任务失败进入重试队列后,Sidekiq会自动把这个参数递增后传入。
举个实际代码示例:
class MyWorker include Sidekiq::Worker def perform(your_task_args, retry_count = 0) if retry_count == 0 # 首次执行的逻辑 puts "当前是任务首次执行" else # 重试时的逻辑,retry_count就是当前重试次数 puts "当前是第#{retry_count}次重试" end # 你的核心任务逻辑写在这里 end end
- 如果你使用的是Sidekiq 6.0及以上版本,还可以直接通过
Sidekiq::CurrentJob.retry_count获取重试次数,不用在perform方法里额外加参数:
class MyWorker include Sidekiq::Worker def perform(your_task_args) retry_count = Sidekiq::CurrentJob.retry_count if retry_count == 0 puts "首次执行任务" else puts "第#{retry_count}次重试" end end end
注意:首次执行时retry_count为0,第1次重试时值为1,第2次重试为2,以此类推。
内容的提问来源于stack exchange,提问作者Learn-ing
相关产品推荐
相关产品推荐

