如何运行第二个工人,在第一个工人期间?

How running second worker, during the first worker?

我有一个 table 有两列 foobar,我有一个 sidekiq worker 在 foo 中记录对象,还有第二个 worker从 foo 获取对象,将它们转换并放入 bar.

第二个工人在第一个工人成功完成后开始,但我想 运行 几秒钟后它首先开始 daemon.That 他们在 同时工作 .

我尝试使用 sidekiq-superworker gem,然后执行此操作

Superworker.define(:MySuperworker) do
  FirstWorker do
    SecondWorker
  end
end

但是第二个worker是在full complete first worker之后启动的,怎么办?

作业是异步的,因此您无法准确控制它们何时 运行 但您可以控制何时创建它们:

class FirstWorker
  def perform
    # create foo
    SecondWorker.perform_async(...)
    # do more work
  end
end