我想通过使他们异步来加速我的查询使用EM :: Synchrony。从这里github page我做2个异步查询的例子沿着以下内容:如何从EventMachine返回MySQL查询结果?
EventMachine.synchrony do
db = EventMachine::Synchrony::ConnectionPool.new(size: 2) do
Mysql2::EM::Client.new(
:host => config[:server],
:username => config[:user],
:password => config[:pwd],
:database => config[:db_name]
)
end
multi = EventMachine::Synchrony::Multi.new
multi.add :a, db.aquery("
select count(distinct userid) from my_table
where date = '2013-09-28'
")
multi.add :b, db.aquery("
select count(distinct userid) from my_table
where date = '2013-09-27'
")
res = multi.perform
puts res
# p "Look ma, no callbacks, and parallel MySQL requests!"
# p res.responses[:callback][0]
EventMachine.stop
end
> #<EventMachine::Synchrony::Multi:0x00000001eb8da8>
我的问题是我如何设置一个回调真正得到由查询返回的值?我想要做的是一旦查询完成后,将它们聚合在一起并写入另一个表或csv或其他。谢谢。
如果没有其他问题,Synchrony似乎对管理连接池非常有用。关于你的答案,我只是找回像# #如何实际查看查询返回的数据(即行)? –