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

5
我希望将我的数据库设置为超时请求,以防止异常请求占用整个应用程序。有什么可以添加到我的Rails配置文件中来实现这一点吗?我尝试在database.yml中添加经常在网上看到的timeout: 5000,但似乎没有任何效果。我尝试在environment.rb中调用ActiveRecord::Base.connection.execute('set statement_timeout to 5000'),但这会导致Rails出错。我在Heroku上运行Postgres数据库,无法直接访问数据库,因此无法通过数据库配置直接进行操作。即使我从Heroku控制台远程执行该命令,他们也可以随时重新启动我的应用程序,如果在应用程序启动时不再次执行此操作,则更改将丢失。
3个回答

9

database.yml:

defaults: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  min_messages: warning
  variables:
    statement_timeout: 5000

是指5秒还是5000秒? - Jwan622
5000 表示 5 秒钟。 - Bill Lipa

5

我已经解决了这个问题,只需要在environment.rb文件的最后一行添加代码,而不是在开头或块中添加。


2

尝试使用这个语法:

SET statement_timeout = 5000;

不,问题不在于SQL,当我将ActiveRecord::Base.connection.execute插入到我的environment.rb中时,我得到的错误是“未初始化常量ActiveRecord”。 - William Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接