Ruby on Rails:如何在应用程序配置中设置数据库超时?

Wil*_*nes 4 database postgresql timeout ruby-on-rails heroku

我想将我的数据库设置为在一定时间内没有完成的超时请求,以防止异常请求独占整个应用程序.

有什么我可以添加到我的Rails配置文件中来设置它吗?

我试图将我经常在网上看到的一行添加timeout: 5000到我的database.yml中,但这似乎没有任何影响.

我试图ActiveRecord::Base.connection.execute('set statement_timeout to 5000')在environment.rb中调用,但这导致Rails错误输出.

我在Heroku上运行Postgres数据库,我没有直接的数据库访问权限,因此我无法直接使用数据库配置.即使我从Heroku控制台远程执行该命令,他们也可以随时重启我的应用程序,如果在应用程序启动时没有重新执行,我的更改就会丢失.

小智 6

database.yml的:

defaults: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  min_messages: warning
  variables:
    statement_timeout: 5000
Run Code Online (Sandbox Code Playgroud)


Wil*_*nes 5

得到这个工作,只需要在 environment.rb 的最后包含该行,而不是在开头或块中。