我们正在使用Heroku上的Play应用程序。我们处理服务器端的消耗计算,根据请求需要超过30秒。在locale机器上一切正常。但是在heroku上我们总是得到一个错误代码H12(Request timeout)。
在play和scala(使用2.1版本)的情况下是否有任何黑客可以解决这个问题?
答案 0 :(得分:0)
Heroku不支持长期存在的请求。解决这个问题的最好方法是给你的客户端一个回调网址并让他们拉回来。有一个图书馆可以帮助你做一些事情,并为你做好准备。它被称为彗星。
以下是使用
的示例public static Result index() {
// Prepare a chunked text stream
Chunks<String> chunks = new StringChunks() {
// Called when the stream is ready
public void onReady(Chunks.Out<String> out) {
//Start your long running process here
out.write("<script>console.log('kiki')</script>");
out.write("<script>console.log('foo')</script>");
out.write("<script>console.log('bar')</script>");
out.close();
}
}
response().setContentType("text/html");
ok(chunks);
}
有关播放asyn http编程的更多信息,请访问: http://www.playframework.com/documentation/2.0/JavaComet