Execute job
Report statistics (processed and failed jobs)
Pushing jobs in bulk
module Sidekiq
module Worker
module Bulk
def perform_async_bulk(args_set)
bulk_size = get_sidekiq_options['max_bulk_size'] || 1000
args_set.each_slice(bulk_size).flat_map do |args|
client_push_bulk('class' => self, 'args' => args)
end
end
def client_push_bulk(item)
pool = Thread.current[:sidekiq_via_pool] ||
get_sidekiq_options['pool'] || Sidekiq.redis_pool
Sidekiq::Client.new(pool).push_bulk(item.stringify_keys)
end
end
end
end
Clean stuck workers from Redis
process_ids = Sidekiq::ProcessSet.new
.select { |p| Time.at(p['beat']) < 2.hours.ago }
.map { |p| p['identity'] }
Sidekiq.redis { |c| c.del(*process_ids) } if process_ids.any?