[英]Ruby timeout does not work in Rails?
當通過TCPSocket連接到不可用的遠程資源時,嘗試獲取超時時遇到問題。 它只是無限期地掛起而不會超時。 理想情況下,我希望它每2分鍾左右嘗試重新連接,但是TCPSocket.new調用似乎阻塞了。 我試過使用timeout(),但是那也不做任何事。 在IRB實例中嘗試相同的調用非常正常,但是在Rails中失敗。 有人為此工作嗎?
我的代碼如下所示:
def self.connect!
@@connection = TCPSocket.new IP, 4449
end
def self.send(cmd)
puts "send "
unless @@connection
self.connect!
end
loop do
begin
@@connection.puts(cmd)
return
rescue IOError
sleep(self.get_reconnect_delay)
self.connect!
end
end
end
不幸的是,當前無法直接在TCPSocket上設置超時。
有關功能請求,請參見http://bugs.ruby-lang.org/issues/5101 。 您將使用基本的Socket類並設置套接字選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.