由于网络问题,我有一个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