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

在Sidekiq worker内部如何获取其被调用时传入的参数?

Sidekiq Worker内部获取执行参数的解决方案

可以直接获取,Sidekiq 为Worker实例提供了内置的arguments实例方法,调用后会返回当前任务执行时传入的原始参数组成的数组,不需要自己额外存储。

你给出的示例代码可以修改为以下形式即可实现需求:

class MyWorker
  include Sidekiq::Worker
  include MyRescheduler

  def perform(a, b, c)
    do_reschedule
  end
end

module MyRescheduler
  def do_reschedule
    # 直接调用arguments获取原始参数数组,展开后传入perform_in即可
    self.class.perform_in 1.minute, *arguments
  end
end

如果使用的是5.2以下的旧版本Sidekiq,没有内置arguments方法,可以通过回调提前存储参数实现兼容:

module MyRescheduler
  def self.included(base)
    base.around_perform :store_arguments
  end

  def store_arguments(job, block)
    @_arguments = job['args']
    block.call
  end

  def do_reschedule
    self.class.perform_in 1.minute, *@_arguments
  end
end

内容的提问来源于stack exchange,提问作者Manuel Meurer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:09:03