我在控制器中有一个方法,它调用在这个例子中创建的另一个方法:
def example
@var1 = ModuleName::ClassName.get()
respond_to do |format|
format.json { render json: @var1}
end
end
方法get()进入寻找信息并返回数组的网站。 一切都很完美,但我想知道如果应用程序需要很长时间才能运行,控制器中是否有设置超时的方法!有可能吗?
答案 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)
有关更详细的答案,请您更具体地说明您如何拨打外部服务电话?