Я пытаюсь использовать EM :: Synchrony, чтобы ускорить мои запросы, сделав их асинхронными. После наряду с примерами из github page здесь я делаю 2 асинхронных запросов:Как вернуть результаты запроса MySQL из EventMachine?
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 оказывается полезным для управления пулом Connection. Что касается вашего ответа, я просто возвращаю какой-то объект, например # # Как реально видеть данные (т. Е. Строки), возвращаемые запросами? –