heroku - 延长 Heroku 30 秒限制

标签 heroku sinatra request-timed-out

我有一个 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/

相关文章:

asynchronous - 如何管理 Dialogflow/Api.ai 中的 5 秒响应超时限制?

ruby-on-rails - Assets预编译需要连接数据库

ruby-on-rails-3 - Heroku Cedar 堆栈和 Rails 3.1 RC5 不显示图像?

python - Telegram bot 记录错误代码 409,即使有单个实例正在运行

ruby - 使对象在 sinatra 范围内可用

amazon-web-services - 带有Docker和SQS的AWS Beanstalk上的Sinatra应用

ruby - 在 Ruby 中,如何通过 Sinatra 获取 `li` 标记内的链接?

javascript - 如何将我的 Heroku 配置变量链接到 Node.js 应用程序

asp.net - 诊断 "Request timed out"HttpException