Ruby on rails Rails:仅为前端设置语句超时(不用于Sidekiq)
我发现有一种方法可以设置超时:Ruby on rails Rails:仅为前端设置语句超时(不用于Sidekiq),ruby-on-rails,postgresql,timeout,sidekiq,Ruby On Rails,Postgresql,Timeout,Sidekiq,我发现有一种方法可以设置超时: 有没有办法只将语句超时添加到前端而不添加到Sidekiq?也就是说,在后台工作人员中,可以接受长时间运行的查询这是一个部署时间问题。无论启动什么进程,web服务器都应该设置适当的环境变量导出WEB\u语句\u超时=2 或者将其反转:使默认值非常短,并为工作人员设置一个覆盖环境变量,从而允许更长的sql执行时间 defaults: &default adapter: postgresql encoding: unicode p
有没有办法只将语句超时添加到前端而不添加到Sidekiq?也就是说,在后台工作人员中,可以接受长时间运行的查询这是一个部署时间问题。无论启动什么进程,web服务器都应该设置适当的环境变量<代码>导出WEB\u语句\u超时=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 %>
defaults:&default
适配器:postgresql
编码:unicode
游泳池:5
min_消息:警告
变量:
语句超时:
如果您使用的是ActiveJob,在执行块之前,在中运行您链接的问题()中提出的解决方案怎么样
大概是这样的:
在执行{ActiveRecord::Base.connection.execute(“SET语句\u timeout='10s')之前
通过这种方式,您可以保持整个数据库.yml
不变,只在后台作业中注入延长的超时时间。如果您在单独的容器中运行Sidekiq实例,这是可能的。在env变量中设置超时值,并在database.yml中使用该env变量。在Sidekiq容器的env变量中设置不同的值。