我正在使用 heroku 来托管一个支持 iOS 应用程序的 ruby on rails 应用程序。我有一个可能会运行很长时间的请求,我需要能够在我的请求被终止之前捕获超时。我正在使用 Timeout::timeout(15) 引发错误并适当地处理它。这在我的本地工作正常,我可以看到错误被抛出和记录。当我在 heroku 上运行相同的代码时,不会记录任何错误。尝试使用机架超时 gem 时我遇到了同样的问题。
是否有其他人在 Heroku 上运行超时时遇到问题?我在雪松上。
我正在使用 heroku 来托管一个支持 iOS 应用程序的 ruby on rails 应用程序。我有一个可能会运行很长时间的请求,我需要能够在我的请求被终止之前捕获超时。我正在使用 Timeout::timeout(15) 引发错误并适当地处理它。这在我的本地工作正常,我可以看到错误被抛出和记录。当我在 heroku 上运行相同的代码时,不会记录任何错误。尝试使用机架超时 gem 时我遇到了同样的问题。
是否有其他人在 Heroku 上运行超时时遇到问题?我在雪松上。
# app/controllers/index_controller.rb
require 'timeout'
Class IndexController < ApplicationController
def timeout
begin
status = Timeout::timeout(5) {
sleep(6)
render :text => "will never be rendered"
rescue Timeout::Error
render :text => "timeout handled"
end
end
end
end
# config/routes.rb
match '/timeout' => "index#timeout"
This works fine on heroku: http://young-gorge-7585.herokuapp.com
看看使用 Rack::Timeout,专为此目的而设计。