Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:仅为前端设置语句超时(不用于Sidekiq)_Ruby On Rails_Postgresql_Timeout_Sidekiq - Fatal编程技术网

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变量中设置不同的值。