2013-05-29 19 views
5

Ich benutze Heroku, um eine Ruby on Rails-Anwendung zu hosten, die eine iOS App unterstützt. Ich habe eine Anfrage, die möglicherweise lange dauert, und ich muss in der Lage sein, die Zeitüberschreitung zu erfassen, bevor meine Anfrage beendet wird. Ich verwende Timeout :: timeout (15), um einen Fehler zu erzeugen und entsprechend zu behandeln. Das funktioniert gut auf meinem lokalen und ich kann sehen, dass der Fehler geworfen und protokolliert wird. Wenn ich denselben Code auf Heroku starte, wird kein Fehler protokolliert. Ich hatte das gleiche Problem, als ich versuchte, das Rack-Timeout-Juwel zu verwenden.Heroku Timeout :: Timeout kein Fehler

Hat noch jemand Probleme mit Timeouts auf Heroku? Ich bin auf Zeder.

+0

ja, ich habe genau das gleiche Problem, sehr ärgerlich! – andy

Antwort

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" 

Dies funktioniert auf Heroku fein: http://young-gorge-7585.herokuapp.com