是否可以为 Rails 中的 *only* Web 查询的数据库设置 statement_timeout?

con*_*t47 8 ruby-on-rails heroku heroku-postgres

是否可以为 db (Postgres) 设置 statement_timeout用于 Ruby on Rails 中的 Web 查询(vs sidekiq workers/jobs)?原因是 Heroku 网络查询在 30 秒后超时,因此在此之后终止来自 Puma 的查询是有意义的。但我希望 sidekiq db 查询能够执行更长时间?

我已经尝试过做这样的事情 database.yml

  primary:
    <<: *default
    url: <%= ENV['DATABASE_URL']) %>
    variables:
      statement_timeout: <%= ENV["STATEMENT_TIMEOUT"] || "0" %>
Run Code Online (Sandbox Code Playgroud)

然后在我的 Procfile

web: STATEMENT_TIMEOUT=30s bundle exec puma

但它没有用。几次请求后,语句超时将重置为 0。

And*_*paw 1

这可能是一个语法问题;我用毫秒写了我的,效果很好。

web: STATEMENT_TIMEOUT=30000 bundle exec puma
Run Code Online (Sandbox Code Playgroud)

我翻转它为我的工作人员提供覆盖,然后默认为 27 秒,否则:

web: STATEMENT_TIMEOUT=30000 bundle exec puma
Run Code Online (Sandbox Code Playgroud)

在我的Procfile

web: bundle exec puma -C config/puma.rb
worker: STATEMENT_TIMEOUT=600000 rake jobs:work
Run Code Online (Sandbox Code Playgroud)