开发者

How do I implement a request timeout in grails?

I'd like to be able to set a configurable (by controller/action) request timeout in grails. The objective is to handle a rare high-load failure mode in a deterministic way. For example, I know that if a given controller/action doesn't return in 30 seconds, then something is horribly wrong and I don't want to keep the user hanging.

I'd like to handle this within the application logic if possible, as there might be reasonable recoveries or messaging depending upon th开发者_如何转开发e conditions of the event.

Filters don't work because the time might be reached anywhere in the request processing lifecycle.


I don't think this is easily achievable. You're probably limited to the capabilities of the Servlet container you're using. For example, with tomcat you could set a connectionTimeout. Unfortunately, this may not give you the control that you're asking for since the timeout and response are more at the mercy of the container.

There's probably a way you could do it with background threads, timers, interrupts, and some black magic, but that would probably be an ill-advised thing.

A couple mailing list discussions I found on the topic:

  • http://grails.1312388.n4.nabble.com/How-to-change-request-timeout-td1356007.html

    Quote from within by Peter Ledbrook:

    I don't know of a Grails feature for this. It supports the session time out, but not a request time out. Servlet containers have connection timeouts.

  • http://www.mail-archive.com/users@tomcat.apache.org/msg38090.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜