2013-05-29 3 views
5

Я использую heroku для размещения рубина на приложении rails, поддерживающего приложение iOS. У меня есть запрос, который может длиться долго, и мне нужно уловить таймаут, прежде чем мой запрос будет убит. Я использую Timeout :: timeout (15), чтобы выбросить ошибку и обработать ее соответствующим образом. Это отлично работает на моем локальном уровне, и я вижу, что ошибка была выбрана и зарегистрирована. Когда я запускаю тот же код на герое, ошибка не регистрируется. У меня была такая же проблема при попытке использовать гросс-тайм-аут стойки.Heroku Timeout :: timeout не выдает ошибку

Есть ли у кого-нибудь еще проблемы с тайм-аутами для запуска на Heroku? Я на кедре.

+0

да у меня точно такая же проблема, очень раздражает! – andy

ответ

4
# 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" 

Это прекрасно работает на Heroku: http://young-gorge-7585.herokuapp.com