定义计时器方法控制器轨道

时间:2012-05-11 10:51:51

标签: ruby-on-rails ruby-on-rails-3

我在控制器中有一个方法,它调用在这个例子中创建的另一个方法:

  def example
    @var1 = ModuleName::ClassName.get()

    respond_to do |format|
      format.json { render json: @var1}
    end
  end

方法get()进入寻找信息并返回数组的网站。 一切都很完美,但我想知道如果应用程序需要很长时间才能运行,控制器中是否有设置超时的方法!有可能吗?

2 个答案:

答案 0 :(得分:2)

这是你可以做到的一种方式(更通用的方式)..

def example
 Timeout::timeout(40) do  # 40 sec, change it to anything you like
   @var1 = ModuleName::ClassName.get()
 rescue Timeout::error
   # do something (maybe set @var1's value if it couldn't get desired array)
 end
 respond_to do |format|
  format.json { render json: @var1}
 end
end

答案 1 :(得分:0)

如果在ModuleName :: ClassName.get()下你暗示某种第三方ruby http库,那么你可能应该设置某种timeout参数(取决于库)。您只需以秒为单位传递所需的超时(或任何您想要的测量值)。

因此伪代码可能如下所示:

ModuleName::ClassName.get(10)

有关更详细的答案,请您更具体地说明您如何拨打外部服务电话?