我希望能够在grails中设置可配置(通过控制器/操作)请求超时。目标是以确定的方式处理罕见的高负载故障模式。例如,我知道如果一个给定的控制器/动作在30秒内没有返回,那么就会出现严重的错误,我不想让用户停下来。
如果可能的话,我想在应用程序逻辑中处理这个问题,因为可能会有合理的恢复或消息传递,具体取决于事件的条件。
过滤器不起作用,因为在请求处理生命周期的任何地方都可以到达时间。
答案 0 :(得分:1)
我认为这不容易实现。您可能只受限于您正在使用的Servlet容器的功能。例如,使用tomcat,您可以设置connectionTimeout。不幸的是,这可能无法为您提供您所要求的控制权,因为超时和响应更容易受到容器的支配。
可能有一种方法可以用背景线程,计时器,中断和一些黑魔法来做,但这可能是一个不明智的事情。
我在这个主题上找到了几个邮件列表讨论:
http://grails.1312388.n4.nabble.com/How-to-change-request-timeout-td1356007.html
Peter Ledbrook从内部引用:
我不知道Grails的功能 这个。它支持会话时间 out,但不是请求超时。 Servlet容器有连接 超时。
http://www.mail-archive.com/users@tomcat.apache.org/msg38090.html