Rails: установить время ожидания оператора только для внешнего интерфейса (не для Sidekiq) - PullRequest
0 голосов
/ 27 февраля 2020

Я вижу, что есть способ установить время ожидания:

{ ссылка }

Есть ли способ добавить время ожидания оператора только в внешний интерфейс, а не Sidekiq? т.е. в фоновом режиме допустимы длительные запросы

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Это проблема времени развертывания. Независимо от запуска процесса ваши веб-серверы должны установить соответствующую переменную среды. export WEB_STATEMENT_TIMEOUT=2

Или переверните его: по умолчанию установите очень короткое значение и установите переменную среды переопределения для своих работников, что позволит значительно увеличить время выполнения sql.

   defaults: &default
    adapter: postgresql
    encoding: unicode
    pool: 5
    min_messages: warning
    variables:
      statement_timeout: <%= ENV["WEB_STATEMENT_TIMEOUT"].present? ? ENV["WEB_STATEMENT_TIMEOUT"] : 600 %>
0 голосов
/ 28 февраля 2020

Если вы используете ActiveJob, как насчет простого запуска решения, предложенного в вопросе, который вы связали ({ ссылка }) в блоке before_perform?

Что-то вроде this:

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

Таким образом, вы можете оставить ваш общий database.yml нетронутым и вводить только расширенный тайм-аут в фоновые задания.

...