通过 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