扩展Heroku 30秒限制

时间:2015-05-25 16:37:39

标签: heroku sinatra request-timed-out

我有一个看起来像这样的Sinatra应用程序:

get '/generate'
  generate_result(params) # method that takes several minutes to complete
end

不幸的是,方法' generate_result'需要几分钟才能运行。但Heroku的限制是每个请求30秒。我使用免费的Heroku帐户,所以我正在寻找一个不需要购买工作人员的解决方案。

我尝试了机架超时'宝石,但问题仍然出现在Heroku上。

1 个答案:

答案 0 :(得分:2)

为了支持Web套接字和长轮询,Heroku提供了一种绕过超时的方法。在初始请求时,您有30秒的时间以至少一个字节响应客户端,之后每个后续字节将使连接保持打开状态至少55秒。

https://devcenter.heroku.com/articles/request-timeout#long-polling-and-streaming-responses

作为黑客,您可以反复通过连接发送“心跳”消息,以使其保持活动状态。剩下的问题是它是否值得 - 通常通过后台处理你会更好。