gpt4 book ai didi

mysql - 在 EventMachine 中启动挂起的 MySQL2 连接

转载 作者:行者123 更新时间:2023-11-30 01:16:23 26 4
gpt4 key购买 nike

我正在从 mysql2 gem 文档运行此代码:

require 'mysql2/em'

EM.run do
client1 = Mysql2::EM::Client.new
defer1 = client1.query "SELECT sleep(3) as first_query"
defer1.callback do |result|
puts "Result: #{result.to_a.inspect}"
end

client2 = Mysql2::EM::Client.new
defer2 = client2.query "SELECT sleep(1) second_query"
defer2.callback do |result|
puts "Result: #{result.to_a.inspect}"
end
end

运行正常,打印结果

Result: [{"second_query"=>0}]
Result: [{"first_query"=>0}]

但是脚本只是挂起并且永远不会返回到命令行。知道发生了什么吗?

最佳答案

EM.run 将启动 EventMachine react 器。那个 react 堆一直循环、循环、循环,直到你以某种方式告诉它停止。您可以使用 EM.stop 手动停止它。

在您的情况下,您可能需要检查回调结果并在两个回调触发时停止 react 器。 Ilya 的 em-http-request 库提供了一个很好的 interface正是针对该用例。可能值得一看。

关于mysql - 在 EventMachine 中启动挂起的 MySQL2 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com