Как установить тайм-аут команды postgresql в рельсах

Я использую heroku и heroku postgresql. Как установить время ожидания команды db, чтобы получить исключение, когда команда sql занимает больше 10 секунд?

Ответы

Ответ 1

Настройте свой файл database.yml следующим образом: бит ключа является хэшем переменных:

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

Ответ 3

Я не знаю ruby, но в PostgreSQL вы можете просто запустить это:

SET statement_timeout = '10s'

а затем все запросы в этом соединении (сеансе) будут иметь строгое ограничение на время выполнения.

Вы также можете изменить его в postgresql.conf как глобальный по умолчанию или даже сделать его по умолчанию в данной базе данных или для данного пользователя, например:

ALTER DATABASE web SET statement_timeout = '10s';
ALTER USER bad_user SET statement_timeout = '10s';

Ответ 4

Добавление

ActiveRecord::Base.connection.execute('set statement_timeout to 10000')

до конца файла environment.rb не работает для меня.

Что работало, добавляя

ActiveRecord::Base.connection.execute("SET statement_timeout = '10s'")

для файла инициализации.