我想将我的数据库设置为在一段时间内未完成的超时请求,以防止异常请求独占整个应用程序。
为了设置这个,我可以添加到Rails配置文件中吗?
我尝试将我经常在timeout: 5000
在线看到的一行添加到我的database.yml中,但这似乎没有任何效果。
我尝试在environment.rb中调用ActiveRecord::Base.connection.execute('set statement_timeout to 5000')
,但这会导致Rails出错。
我在Heroku上运行Postgres数据库,我没有直接的数据库访问权限,因此我无法直接使用数据库配置。即使我从Heroku控制台远程执行该命令,他们也可以随时重启我的应用程序,如果在应用程序启动时没有重新执行,我的更改就会丢失。
答案 0 :(得分:6)
database.yml中:
defaults: &default
adapter: postgresql
encoding: unicode
pool: 5
min_messages: warning
variables:
statement_timeout: 5000
答案 1 :(得分:4)
有了这个工作,只需要在最后一行中包含在environment.rb中的行,而不是在开头或块中。
答案 2 :(得分:1)
试试这个语法:
SET statement_timeout = 5000;