【问题标题】:Sidekiq push_bulk to batchSidekiq push_bulk 到批处理
【发布时间】:2014-07-25 07:42:00
【问题描述】:

我正在尝试使用 Sidekiq 批处理将一组相关作业组合在一起。但是,由于 jobs 方法无法足够快地将所有作业推送到 Redis,因此批处理会在完成回调时过早触发。 https://github.com/mperham/sidekiq/wiki/Batches 的 sidekiq 文档说这可以通过使用 Sidekiq::Client.push_bulk 方法解决,但文档不清楚如何批量推送。有人可以分享一个如何在批处理上下文中使用push_bulk 的示例吗?

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq


    【解决方案1】:

    假设您要批量处理 100 个用户,每个作业一个用户 ID。

    b = Sidekiq::Batch.new
    b.jobs do
      users = User.select(:id).limit(100).map(&:id) # users is [1, 2, 3, etc...]
      args = users.map {|uid| [uid] } # args is [[1], [2], [3], etc...]
      Sidekiq::Client.push_bulk('class' => YourWorker, 'args' => args)
    end
    

    【讨论】:

    • 作为后续,是否可以批量推送不同类型的多个作业,或者push_bulk 仅设计为允许您使用一组参数推送相同类型的作业?跨度>
    • 每次调用只有一种类型。
    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2010-12-17
    • 2019-08-22
    • 2015-05-27
    • 2016-07-20
    相关资源
    最近更新 更多