【发布时间】:2017-07-31 08:12:00
【问题描述】:
我正在使用 firebird 数据库 gem 连接到用户指定的数据库。只要用户提供正确的数据,它就可以正常工作。如果没有,gem 将无法连接,并且需要很长时间 gem 才会抛出异常。我试过像这样使用 Timeout:timeout:
database = Fb:Database(connection_data)
Timeout::timeout(5) do
database.connect #that's the part that takes long to connect
end
但它不会超时。它只是等待(这是一个漫长的等待,超过一分钟),并抛出 gem 异常(它不是 Timeout 异常)。看起来代码执行时间低于 5 秒(根据超时),除了它花了 1-2 分钟。我一直在寻找解释(也检查了源代码),但没有找到任何解释。我真的不想修复它(因为无论如何它都会被转移到延迟的工作中),但我想知道为什么,以及如何忽略超时。
另外,下面的代码也可以正常工作。
Timeout::timeout(5) do
sleep(10)
end
【问题讨论】:
标签: ruby-on-rails ruby firebird