ruby-on-rails - Heroku 30 秒超时 w/long 外部查询的解决方法

标签 ruby-on-rails heroku

注意:这篇文章中有些内容不符合最佳实践。警告:)

  • 我正在开发连接到微型实例 AWS 服务器的管理仪表板。
  • 数据库有数千万条记录。
  • 大多数查询会在几秒钟内返回,但有些查询最多需要一两分钟才能返回,具体取决于我无法控制的一些因素。

由于 Heroku 的 30 秒限制 (https://devcenter.heroku.com/articles/request-timeout),我需要找到一些方法来争取时间以保持连接打开,直到查询返回。 Heroku 确实说您可以通过同时向客户端发送字节来购买时间,这又为您购买了 55 秒。

无论如何,我很好奇你们是否有解决 Heroku 拖延时间的方法。谢谢!

最佳答案

我已经为此做了一个解决方法。我们的应用程序正在运行 Sinatra,我使用了 EventMachine gem保持每 10 秒将 \0 写入流中,这样 Heroku 在操作完成之前不会关闭连接,请参见示例 https://gist.github.com/troex/31790323fb4a8a29c8b8cd84e50ad1e8

我的示例使用的是 Puma,但它应该也适用于 Unicorn 和 Thin(Thin 不需要 EventMachine.run)。对于 Rails,我认为您可以使用 before/after_action 来启动/停止事件计时器。

关于ruby-on-rails - Heroku 30 秒超时 w/long 外部查询的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057829/

相关文章:

ruby-on-rails - Rails 验证以确保用户名不会与现有路由冲突?

ruby-on-rails - Rails 5. 模型的草稿版本和发布版本

javascript - Heroku 找不到我的 index.js 文件

ruby-on-rails - Nginx 和 Heroku。提供静态文件

node.js - Heroku/Node.js - 导致内部服务器错误的某种路由错误

ruby-on-rails - 生产 Rake 任务无法识别我的模型

ruby-on-rails - Rails - 一项任务中的 Rake 测试和 Rubocop

ruby-on-rails - 如何获取为特定模型类定义的所有 factory_girl 工厂?

ruby-on-rails - Rails 可安装引擎使用来自主应用程序的数据库模式

ruby - 如何在没有默认凭据文件的情况下授权 Google 服务帐户?