我在控制器中有一个方法,它调用在模块中创建的另一个方法,如下例所示:
def example
@var1 = ModuleName::ClassName.get()
respond_to do |format|
format.json { render json: @var1}
end
end
get() 方法去一个网站寻找信息并返回一个数组。一切正常,但我想知道如果应用程序需要很长时间才能运行,控制器中是否有设置超时的方法!是否可以?
我在控制器中有一个方法,它调用在模块中创建的另一个方法,如下例所示:
def example
@var1 = ModuleName::ClassName.get()
respond_to do |format|
format.json { render json: @var1}
end
end
get() 方法去一个网站寻找信息并返回一个数组。一切正常,但我想知道如果应用程序需要很长时间才能运行,控制器中是否有设置超时的方法!是否可以?
这是一种方法(一种更通用的方法)你可以做到这一点..
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
如果在 ModuleName::ClassName.get() 下暗示某种第三方 ruby http 库,那么很可能您应该设置某种timeout
参数(取决于库)。您只需在几秒钟内通过所需的超时(或您想要的任何测量值)。
因此伪代码可能如下所示:
ModuleName::ClassName.get(10)
有关更详细的答案,您能否更具体地了解您如何致电外部服务?