我希望能夠在grails中設置一個可配置的(通過控制器/操作)請求超時。其目標是以確定性的方式處理罕見的高負載故障模式。例如,我知道如果一個給定的控制器/動作在30秒內沒有返回,那麼有些事情是可怕的錯誤,我不想讓用戶掛起。如何在grails中實現請求超時?
如果可能的話,我想在應用程序邏輯中處理這個問題,因爲根據事件的情況可能會有合理的恢復或消息。
過濾器不起作用,因爲時間可能在請求處理生命週期的任何地方達到。
我希望能夠在grails中設置一個可配置的(通過控制器/操作)請求超時。其目標是以確定性的方式處理罕見的高負載故障模式。例如,我知道如果一個給定的控制器/動作在30秒內沒有返回,那麼有些事情是可怕的錯誤,我不想讓用戶掛起。如何在grails中實現請求超時?
如果可能的話,我想在應用程序邏輯中處理這個問題,因爲根據事件的情況可能會有合理的恢復或消息。
過濾器不起作用,因爲時間可能在請求處理生命週期的任何地方達到。
我不認爲這很容易實現。您可能僅限於您正在使用的Servlet容器的功能。例如,使用tomcat,你可以設置一個connectionTimeout。不幸的是,這可能不會給你你所要求的控制,因爲超時和響應更多的是容器的擺佈。
你可能會用後臺線程,定時器,中斷和一些黑魔法來做到這一點,但這可能是一個不明智的做法。
一對夫婦的郵件列表討論我的話題發現:
http://grails.1312388.n4.nabble.com/How-to-change-request-timeout-td1356007.html
報價從內彼得·萊德布魯克:
我不知道一個Grails功能的 這個。它支持會話時間爲 ,但不支持請求超時。 Servlet容器有連接 超時。
看到http://stackoverflow.com/questions/2907516/how-to-configure-a-session-timeout-for-grails-application – Tom 2010-09-14 01:57:27
@湯姆 - 這不是我不認爲這是一個重複的。引用的問題是關於會話超時;這是每個請求。 – 2010-09-14 14:17:29
@Rob。是的,我的不好。對@Chris Alef道歉。 – Tom 2010-09-14 14:35:44