簡體   English   中英

Ruby超時在Rails中不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM