我有一个看起来像这样的Sinatra应用程序:
get '/generate'
generate_result(params) # method that takes several minutes to complete
end
不幸的是,方法' generate_result'需要几分钟才能运行。但Heroku的限制是每个请求30秒。我使用免费的Heroku帐户,所以我正在寻找一个不需要购买工作人员的解决方案。
我尝试了机架超时'宝石,但问题仍然出现在Heroku上。
答案 0 :(得分:2)
为了支持Web套接字和长轮询,Heroku提供了一种绕过超时的方法。在初始请求时,您有30秒的时间以至少一个字节响应客户端,之后每个后续字节将使连接保持打开状态至少55秒。
https://devcenter.heroku.com/articles/request-timeout#long-polling-and-streaming-responses
作为黑客,您可以反复通过连接发送“心跳”消息,以使其保持活动状态。剩下的问题是它是否值得 - 通常通过后台处理你会更好。