Sha256: 326227e2d8554444ab2aeb36f3ba9c1f528361c5de873fb0a23ad4f2ffd6cba8

Contents?: true

Size: 815 Bytes

Versions: 1

Compression:

Stored size: 815 Bytes

Contents

# frozen_string_literal: true

require 'bundler/setup'
require 'polyphony/postgres'

PGOPTS = {
  host:     '/tmp',
  user:     'reality',
  password: nil,
  dbname:   'reality',
  sslmode:  'require'
}

DBPOOL = Polyphony::ResourcePool.new(limit: 8) { PG.connect(PGOPTS) }

def get_records(db)
  res = db.query("select pg_sleep(0.001) as test")
  # puts "got #{res.ntuples} records: #{res.to_a}"
rescue => e
  puts "got error: #{e.inspect}"
  puts e.backtrace.join("\n")
end

CONCURRENCY = ARGV.first ? ARGV.first.to_i : 10
puts "concurrency: #{CONCURRENCY}"

DBPOOL.preheat!
t0 = Time.now
count = 0
coprocs = CONCURRENCY.times.map {
  spin { loop { DBPOOL.acquire { |db| get_records(db); count += 1 } } }
}
sleep 5
puts "count: #{count} query rate: #{count / (Time.now - t0)} queries/s"
coprocs.each(&:interrupt)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
polyphony-0.19 examples/interfaces/pg_pool.rb