开发者

Ruby on Rails: How to set a database timeout in application configuration?

I'd like to set my database to timeout requests that do not compl开发者_如何学运维ete within a set amount of time, in order to prevent outlier requests from monopolizing the entire application.

Is there anything I can add to my Rails configuration files in order to set this?

I tried to add a line I saw often online of timeout: 5000 to my database.yml, but that didn't seem to have any effect.

I tried to make calls to ActiveRecord::Base.connection.execute('set statement_timeout to 5000') in the environment.rb but that causes Rails to error out.

I'm running a Postgres database on Heroku, where I do not have direct database access, hence I cannot do this with database configuration directly. Even if I remotely execute that command from the Heroku console, they can restart my application at any time, and if this isn't re-executed as the application starts, my change gets lost.


database.yml:

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


Got this working, just needed to include the line in environment.rb at the very end, rather than in the beginning or in the block.


Try this syntax:

SET statement_timeout = 5000;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜