如何在Heroku上更改默认请求时间?

时间:2014-02-13 09:01:40

标签: ruby-on-rails ruby-on-rails-3 heroku

我的应用程序是基于Rails而我的生产服务器是在Heroku上。

我的应用程序主要用于文件上传和文件处理,请求处理时间超过50秒。根据Heroku配置,我的请求没有及时响应,并且由于请求超时,它将我发送到应用程序错误页面。

如何在Heroku上更改请求超时配置?

请帮助我开展申请工作。

3 个答案:

答案 0 :(得分:17)

根据Heroku's documentation

,这是不可能的
  

超时值不可配置。如果您的服务器需要更长   超过30秒完成给定的请求,我们建议移动它   工作到后台任务或工作人员定期ping您的服务器   查看处理请求是否已完成。这种模式可以解放   您的网络进程可以完成更多工作,并且总体上会降低   应用程序响应时间。

答案 1 :(得分:0)

您应该将大文件直接上传到Amazon S3或类似文件,然后使用Heroku后台工作程序处理该文件。通常,您的网页将使用某种轮询(通常是AJAX请求)来查看处理何时完成并更新前端。

答案 2 :(得分:0)

如前所述,您需要在后台处理它,因为您无法更改Heroku强制执行的超时。这实际上是一件好事,因为它可以在Web应用程序响应时提供更好的设计,并且可以更好地扩展。

这意味着你需要使用像delayed job这样的东西,你可以在Heroku here上阅读它。

事情的流动将是这样的:

  1. 在Heroku强制执行的硬限制(超时)内上传文档。
  2. 安排后台作业处理文档并将200 OK返回浏览器。
  3. 浏览器等待完成,例如后台AJAX轮询一个标志,以查看后台作业何时就绪。
  4. 延迟工作选择预定工作,完成后设置标志以指示后台工作已完成。
  5. 浏览器现在可以通知用户它已完成(由您的应用程序确定适合的内容)。
  6. 这是一个如何做到这一点的想法。您有几种不同的方法可以做到,而延迟工作只是您可以选择的方式。