【发布时间】:2009-07-16 06:02:47
【问题描述】:
我正在尝试使用 ActiveResource on Rails 2.3.2 联系 REST API。
我正在尝试使用超时功能,以便如果我正在联系的资源出现故障,我可以快速失败 - 我正在执行以下操作:
class WorkspaceResource < ActiveResource::Base
self.timeout = 5
self.site = "http://mysite.com/restAPI"
end
但是,当我知道该服务不可用时尝试联系该服务时,该课程只会在默认的 60 秒后超时。我可以从错误堆栈中看到,超时错误确实来自我的 gem 文件夹中的 ActiveResource 类,该类具有允许超时设置的适当功能,但我设置的超时似乎永远不会起作用。
有什么想法吗?
所以显然问题不在于超时不起作用。我可以在本地运行服务器,使其在超时限制内不返回响应,然后查看超时是否有效。
问题实际上是,如果服务器不接受连接,超时不会像我预期的那样起作用 - 它根本不起作用。似乎超时仅在服务器接受连接但响应时间过长时才有效。
对我来说,这似乎是一个问题——当我联系的服务器关闭时,超时不应该也起作用吗?如果没有,应该有另一种机制来阻止一堆请求挂起......谁知道快速的方法来做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby timeout