我在http调用后进行了一个很长的过程,并在响应中收到此错误(503)。
我需要增加Dyno的TimeOut,有人知道吗?
异常
[router]: at=error code=H12 desc="Request timeout" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0
答案 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秒(或类似的东西)