Sidekiq父批不等待子批次

问题描述 投票:0回答:1

更新:现在意识到这是Sidekiq Pro唯一的功能。难怪它不起作用。

我正在创建一个父批处理,然后在创建子批处理中,但父作业在子节点完成之前“完成”。

我正在做文档所说的,我能说的唯一区别是我不是直接在Sidekiq工作者中创建子批次,而是在工人调用的类中。

但是我正在通过批处理并确认子批次具有与初始整批相匹配的batch.parent_bid。

当我看到Sidekiq网站时,我看到父母工作人员在所有孩子面前完成,但我需要等待。想法?

代码看起来像这样:

overall = Sidekiq::Batch.new
overall.jobs do
    ParentWorker.perform_async current_user.id
end


class ParentWorker
  include Sidekiq::Worker
  include Sidekiq::Status::Worker

  def perform user_id
    user = User.find(user_id)
    UserPopulator.new.import_all user, batch
  end

end

class UserPopulator

  def initialize user, batch
    @user = user
    @batch = batch
  end

  def import_all
    overall = Sidekiq::Batch.new(@batch.bid)
    overall.jobs do
      child_batch = Sidekiq::Batch.new
      user.friends.each do |friend|
        child_batch.jobs do
          GetFriends.perform_async @user_id, friend
        end
      end
    end
  end

end
sidekiq
1个回答
0
投票

“等待”其他作业完成的唯一方法是定义在该批次中的所有作业完成时执行的回调。由于您尚未定义任何内容,因此您将无法获得该行为。查看批量维基页面。

batch.on(:success, ...)
© www.soinside.com 2019 - 2024. All rights reserved.