【发布时间】:2015-12-13 11:39:18
【问题描述】:
我在 heroku 上部署了我的 rails 项目,但我在 heroku 上遇到超时错误。我在 heroku 上使用 puma 服务器。我的项目是关于使用 URL 抓取网络数据。我还尝试了 webrick 和独角兽服务器。有人可以建议我解决这个问题吗?
【问题讨论】:
标签: ruby-on-rails-4 heroku github heroku-toolbelt heroku-postgres
我在 heroku 上部署了我的 rails 项目,但我在 heroku 上遇到超时错误。我在 heroku 上使用 puma 服务器。我的项目是关于使用 URL 抓取网络数据。我还尝试了 webrick 和独角兽服务器。有人可以建议我解决这个问题吗?
【问题讨论】:
标签: ruby-on-rails-4 heroku github heroku-toolbelt heroku-postgres
您的问题缺少有关导致超时错误的原因的信息。当您从其他网页获取数据时,超时可能是由于 HTTP URL 没有响应造成的。
在这种情况下,您使用的网络服务器可能无关紧要。事实上,Heroku 将request timeout 强制为 30 秒。如果您的应用在 30 秒内未返回响应,则 Heroku 将终止该请求。您使用哪个 Web 服务器并不重要。
为了解决这个问题,你必须
在您的代码中设置一个超时时间(您可以使用Timeout 库)以确保没有外部 HTTP 请求花费超过一定时间,该时间必须低于 Heroku 超时时间。
您可能还希望将长期运行的任务从请求的上下文中移到不受 Heroku 中请求超时影响的异步作业中。但是,为了做到这一点,您需要一个后台作业系统,例如 Sidekiq 或 Resque。
【讨论】: