You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:10:32