Skip to content

Instantly share code, notes, and snippets.

@balepc
Created December 5, 2011 20:55
Show Gist options
  • Save balepc/1435297 to your computer and use it in GitHub Desktop.
Save balepc/1435297 to your computer and use it in GitHub Desktop.
# config/server.rb
require "em-synchrony"
require "em-synchrony/mysql2"
config['db'] = EM::Synchrony::ConnectionPool.new(:size => 25) do
::Mysql2::EM::Client.new({
:adapter => 'em_mysql2',
:database => 'shard001',
:username => 'xxx',
:password => 'xxx',
:host => 'localhost',
:reconnect => true})
end
# server.rb
def response(env)
...
multi = EventMachine::Synchrony::Multi.new
ids.each do |id|
multi.add id, db.aquery("select * from users where id = #{id}")
end
users = []
res = multi.perform
res.responses[:callback].each do |res|
res.last.callback{|r| users << r.first}
end
...
end
# server.rb
def response(env)
...
db = EventMachine::Synchrony::ConnectionPool.new(size: 25) do
Mysql2::EM::Client.new({
:adapter => 'em_mysql2',
:database => 'shard001',
:username => 'xxx',
:password => 'xxx',
:host => 'localhost',
:reconnect => true})
end
multi = EventMachine::Synchrony::Multi.new
ids.each do |id|
multi.add id, db.aquery("select * from users where id = #{id}")
end
users = []
res = multi.perform
res.responses[:callback].each do |res|
res.last.callback{|r| users << r.first}
end
...
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment