如何使用sidekiq worker在单个rake中执行多个参数?

时间:2014-06-23 06:23:41

标签: arguments rake sidekiq worker

我是sidekiq的新手,我刚刚创建了sidekiq worker,当我运行sidekiq worker时,它只执行第一个rake任务

我想用两个不同的参数组合

执行单个rake

例如

def perform
  Rake::Task['test:fetch'].invoke("foo", "bar", 1, 1)
  Rake::Task['test:fetch'].invoke("foo1", "bar1", 1, 1)
end

如何以5分钟的间隔执行上述操作,我应该使用rake 2次或任何其他方法来传递两个不同的参数吗?

2 个答案:

答案 0 :(得分:0)

Rake的工作方式。阅读有关任务的rake文档并调用()

答案 1 :(得分:0)

您需要在调用invoke方法后重新启用rake任务,或使用execute以避免重新启用。

使用invoke,您的代码可能如下所示:

def perform
  Rake::Task['test:fetch'].invoke("foo", "bar", 1, 1)
  Rake::Task['test:fetch'].reenable
  Rake::Task['test:fetch'].invoke("foo1", "bar1", 1, 1)
end

使用execute,您的代码可能如下所示:

def perform
  task_args = {:arg1 => "foo", :arg2 => "bar", :arg3 => 1, :arg4 => 1 }
  Rake::Task['test:fetch'].execute(Rake::TaskArguments.new(task_args.keys, task_args.values))

  task_args = {:arg1 => "foo1", :arg2 => "bar1", :arg3 => 1, :arg4 => 1 }
  Rake::Task['test:fetch'].execute(Rake::TaskArguments.new(task_args.keys, task_args.values)
end

有关更多解释,请参阅此处:Why is Rake not able to invoke multiple tasks consecutively?