Heroku HTTP 503长时间处理后响应

时间:2015-10-05 13:39:56

标签: java heroku

我在http调用后进行了一个很长的过程,并在响应中收到此错误(503)。

我需要增加Dyno的TimeOut,有人知道吗?

异常

[router]: at=error code=H12 desc="Request timeout" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 

3 个答案:

答案 0 :(得分:0)

你无法在Heroku中增加“Dyno的TimeOut”。它是所有人的着名约束之一,由Heroku严格设定为30秒。您可以看到详细信息here

答案 1 :(得分:0)

您无法增加超时,但可以通过设置Transfer-Encoding: chunked标头来保持连接处于打开状态。当Heroku的路由器看到这个时,它不会关闭连接。

这是一个示例项目,它正是这样做并使用Servlet 3.1来阻止请求线程阻塞: https://github.com/kissaten/slow-service-example

相关代码是:

response.addHeader("Transfer-Encoding", "chunked");

如果您进入那种事情,还有一个很好的Scala / Play示例: http://www.jamesward.com/2015/06/02/redirecting-and-chunking-around-herokus-30-second-request-timeout

答案 2 :(得分:0)

我无法增加" Dyno的TimeOut"在Heroku。它是所有人的着名约束之一,由Heroku严格设定为30秒。您可以在此处查看详细信息

我的解决方案是使用Threads进行回程,我使用漫长的过程创建一个Thread并响应"运行"与进程的索引,然后我检查它是否完成提出请求5秒(或类似的东西)