Skip to content

Instantly share code, notes, and snippets.

@lowang
Created May 26, 2015 15:45
Show Gist options
  • Save lowang/0b2f2207f5d4e2b02289 to your computer and use it in GitHub Desktop.
Save lowang/0b2f2207f5d4e2b02289 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'bundler/setup'
Bundler.require(:default)
class HardWorker
include Sidekiq::Worker
def perform(changes)
puts 'Doing hard work'
end
end
# 26s
# 100_000.times do |n|
# HardWorker.perform_async({offer_id: "a" * 32, changes: {shop_active: [true, false]}})
# puts n if n % 1000 == 0
# end
def process_queue(queue)
# sidekiq_items = queue.map {|n| { 'class' => HardWorker, 'args' => [:offer_id, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", :changes, {:shop_active=>[true, false]}] } }
# p sidekiq_items.first
sidekiq_items = { 'class' => HardWorker, 'args' => queue.map { |q| [{offer_id: "a" * 32, changes: {shop_active: [true, false]}}] }}
Sidekiq::Client.push_bulk(sidekiq_items)
queue.clear
end
# 3.1s!!!!
queue = []
100_000.times do |n|
queue << n
if queue.size >= 1000
process_queue(queue)
end
end
process_queue(queue)
source 'https://rubygems.org'
gem 'activesupport'
gem 'sidekiq'
gem 'pry'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment