我有一个 Sinatra 应用程序,看起来像这样:
get '/generate'
generate_result(params) # method that takes several minutes to complete
end
不幸的是,“generate_result”方法需要几分钟才能运行。但 Heroku 的限制是每个请求 30 秒。我正在使用免费的 Heroku 帐户,因此我正在寻找一种不需要购买工作测功机的解决方案。
我尝试了“rack-timeout”gem,但问题仍然出现在 Heroku 上。
最佳答案
为了支持网络套接字和长轮询,Heroku 提供了一种解决超时的方法。收到初始请求后,您有 30 秒的时间用至少一个字节响应客户端,此后每个后续字节将使连接保持打开状态至少 55 秒。
https://devcenter.heroku.com/articles/request-timeout#long-polling-and-streaming-responses
作为黑客,您可以通过连接重复发送“心跳”消息,以保持连接处于事件状态。剩下的问题是这是否值得——通常进行后台处理会更好。
关于heroku - 延长 Heroku 30 秒限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442533/