sidekiq延迟的两种方法

时间:2014-02-19 08:43:11

标签: ruby-on-rails ruby sidekiq

我如何在sidekiq上做类似的事情?

Gateway::AddUser.delay.new(6).call

目前,Gateway::AddUser.delay.new(6)会返回一个字符串,而call方法会尝试在其上运行。但我想打电话给Gateway::AddUser.new(6).call延迟

2 个答案:

答案 0 :(得分:3)

就像这样解决:

Gateway::AddUser.delay.perform(6)

perform方法是:

def self.perform(params)
  new(params).call
end

只需将2个方法重写为1 =)

答案 1 :(得分:1)

为什么不把它包装在其他方法中呢?

class User
  def self.add_user_via_gateway(attributes)
    Gateway::AddUser.new(attributes).call
  end
end

User.delay.add_user_via_gatway(attributes)

编辑:

如果您愿意,还可以创建一个工人类。

class AddUserViaGatewayWorker
  include Sidekiq::Worker

  def perform(attributes)
    Gateway::AddUser.new(attributes).call
  end
end

AddUserViaGatewayWorker.perform_async(attributes)