如果方法花费的时间太长,如何跳过



由于网络问题,我有一个redis调用可能需要很长时间,直到调用超时。redis的呼吁并不重要。

有没有一种方法可以用一些东西来包装这个调用,检查它需要多长时间,以及跳过调用是否需要太长时间(也许可以调用其他方法来记录)?

类似的东西

check_time(30.seconds) do 
 $redis.something
 if error
   log it
 end
end

您可以使用Timeout。以下是文档中的示例:

require 'timeout'
status = Timeout::timeout(5) {
  # Something that should be interrupted if it takes more than 5 seconds...
}

如果超时发生,它会抛出一个错误:

require 'timeout'
begin
  Timeout::timeout(30) {
    $redis.something
  }
rescue Timeout::Error
  # log error
end
require "timeout"
begin
  Timeout.timeout(30) do
    $redis.something
  end
rescue => e
  log_it
end

相关内容

  • 没有找到相关文章

最新更新