我是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次或任何其他方法来传递两个不同的参数吗?
答案 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?