2

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

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

不幸的是,方法“generate_result”需要几分钟才能运行。但是 Heroku 的限制是每个请求 30 秒。我正在使用免费的 Heroku 帐户,因此我正在寻找一种不需要购买工人测功机的解决方案。

我尝试了“机架超时”gem,但问题仍然出现在 Heroku 上。

4

1 回答 1

2

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

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

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

于 2015-05-26T14:02:08.823 回答