1
由於網絡問題,我有一個redis調用可能需要很長時間,直到調用超時。這個redis呼叫並不重要。如果方法時間太長,如何跳過
有沒有辦法將這個調用換成什麼東西來檢查它需要多長時間以及是否需要太長的時間才能跳過調用(也可以調用其他一些方法來記錄)?
像
check_time(30.seconds) do
$redis.something
if error
log it
end
end
由於網絡問題,我有一個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
超時是要走的路......但要[小心](HTTPS:/ /coderwall.com/p/1novga),請注意,redis-rb接受超時選項[也](https://github.com/redis/redis-rb/blob/master/lib/redis.rb) – mestachs