- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想采取的态度是,如果我的服务器端太慢,则抛出异常并向客户端发回有意义的错误消息。我任意将此时间限制设置为 5 秒,并将根据需要进行调整。
我看到 App Engine 有 ApiProxy.getCurrentEnvironment().getRemainingMillis()
,它为我们提供了在它抛出 DeadlineExceedException
并计时我们之前剩余的毫秒数出。
我想做类似的事情,但是将我自己的 5 秒限制强加于 GAE 的 60 秒限制(同样,现在我选择 5 秒还是 40 秒并不重要,只要它们比 GAE 强加的更严格)。我想编写一个启动 5 秒计时器的服务器端处理程序/servlet。如果请求没有在这段时间内返回,它会抛出异常并返回给客户端:
public class MyTimedServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// Start 5-second timer
Timer timer = new Timer(5000);
try {
timer.start();
response = handleRequest(request);
}
catch(TimeException timerException) {
response = ResponseFactory.newTimeExceededResponse();
}
}
}
不幸的是,我在 GAE API 中没有看到任何与我正在寻找的 Timer
对象相似的东西。
我已经计划通过 ThreadManager.currentRequestThreadFactory().newRequestThread(...)
对每个请求使用多线程,所以我不想浪费其中一个(我只一次获取 10 个!)线程来创建后台“Timer Thread”,除非我绝对必须这样做。
所以我问:GAE 是否有这样的开箱即用的东西,如果我必须自己推出,我该怎么做呢?提前致谢!
最佳答案
代码中的任何异步任务(不遵循正常流程)都涉及新线程执行,在本例中,此任务是计算时间。
但是您可以使用类 Timer
& TimerTask
它们都包含在 App-Engine JRE 白名单中。
示例代码:未经测试,仅供引用。
public class YourServlet extends HttpServlet {
Timer timer;
HttpServletResponse response;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)...{
int seconds = 5;
timer = new Timer();
timer.schedule(new DeadLine(), seconds * 1000);
/* the rest of your code here */
}
class DeadLine extends TimerTask {
public void run() {
response.getWriter().print("Error: deadline reached.");
}
}
}
阅读这篇关于 job scheduling in Java, 的文章了解更多信息。
关于java - 如何施加 Google App Engine 的 DeadlineExceededException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351563/
是DeadlineExceededException陷入 gae/j 开发模式? 最佳答案 不,不是。你可以写一个API call hook不过,如果你愿意的话,可以扔一个。 关于java - 谷歌应
我正在使用谷歌应用引擎。之前一切工作正常,但现在当我调用 servlet 时,浏览器需要花费很多时间,然后显示以下内容: DeleteBooksServlet: com.google.apphost
我在 appengine 项目中设置了 cron: /cron/someurl cron every monday 8:00
通过 Drive API(PUT 方法)更新文件时,我在 Google App Engine 上收到 DeadlineExceededException。 我正在使用示例 Python 应用程序 (
http 请求(或数据库连接)在 60 秒后中断,多年来它一直运行没有问题,这种情况在我部署新版本的应用程序几天前开始发生。 配置:Java8实例类B4 迁移回旧版本运行得很好(相同的数据库,相同的配
我想采取的态度是,如果我的服务器端太慢,则抛出异常并向客户端发回有意义的错误消息。我任意将此时间限制设置为 5 秒,并将根据需要进行调整。 我看到 App Engine 有 ApiProxy.getC
我正在 Google App Engine/Java 中开发 Twitter4J Web 应用程序。 我需要显示两个列表。一个是 Twitter 好友,另一个是关注者。有照片和网名。 对于拥有 20-
在 Google App Engine 上的应用必须具有在 30 秒内返回响应数据的 Web 请求。当超过这个时间时,会抛出一个DeadlineExceededException异常: /time.j
伙计们——我收到以下异常,无法解释原因。要保留的对象数量通常很少( interested = getInterestedUsers(locx, locy, gamecode); // this al
我有一个相当简单的 App Engine Java 应用程序,其中包含帐户、订单和订单项 - 没什么特别的。 就在过去的 12 小时内,我开始从一些相当直接的代码中抛出异常,这些代码将订单添加到帐户然
我是一名优秀的程序员,十分优秀!