ruby-on-rails 以编程方式访问Sidekiq Config/有哪些配置选项,在哪里设置?

oipij1gg  于 2023-03-09  发布在  Ruby
关注(0)|答案(1)|浏览(125)

在Rails应用程序中,Sidekiq 7具有config/sidekiq.yml以及创建初始化器来设置配置的能力。
我试图找出a)哪些配置选项可用,b)在何处可以设置它们,以及c)如何检查sidekiq是否已配置
我不需要(c)成为生产代码或逻辑的一部分,更像是我偶尔可以在Rails控制台中使用的东西,以验证我所做的配置更改是否已被接受,因此(c)可以通过某种“启动时转储配置”特性来满足(我找不到它是否存在)。
我尝试的是:

> bin/rails c
irb> require "sidekiq/cli"
irb> Sidekiq::CLI.instance.parse
irb> Sidekiq::CLI.instance.config

这表明config/sidekiq.yml似乎被使用了。不过,酷问题是当我试图复制初始化器中的配置时

#:concurrency: <%= ENV.fetch("SIDEKIQ_CONCURRENCY") { 15 } %>
:timeout: <%= ENV.fetch("SIDEKIQ_TIMEOUT_SECONDS") { 25 } %>
:queues:
  - default

(note,concurrency在这里被注解掉,希望“强制”它使用初始化式:

Sidekiq.configure_server do |config|
  config.concurrency = 88
  config.redis = {
    url: ENV.fetch("SIDEKIQ_REDIS_URL")
  }
end

# configure_client omitted

这个初始化器不会产生错误,但是当我执行上面的CLI.instance操作时,这个值没有被使用,所以要么是初始化器不允许配置这个(如果是这样的话,这里可以配置什么?)要么是我转储配置的方式不准确(如果是这样的话,我怎么做?)。
我似乎找不到好的文档,似乎内部的配置在版本7中发生了变化。

根据@Mike Perham关于sidekiq -v工作的评论进行编辑:

下面是sidekiq -v的输出:

# bundle exec sidekiq -v

               m,
               `$b
          .ss,  $$:         .,d$
          `$$P,d$P'    .,md$P"'
           ,$$$$$b/md$$$P^'
         .d$$$$$$/$$$P'
         $$^' `"/$$$'       ____  _     _      _    _
         $:    ',$$:       / ___|(_) __| | ___| | _(_) __ _
         `b     :$$        \___ \| |/ _` |/ _ \ |/ / |/ _` |
                $$:         ___) | | (_| |  __/   <| | (_| |
                $$         |____/|_|\__,_|\___|_|\_\_|\__, |
              .d$$                                       |_|
      

2023-03-08T14:25:30.331Z pid=434 tid=7me INFO: Booted Rails 7.0.4.2 application in development environment
2023-03-08T14:25:30.331Z pid=434 tid=7me INFO: Running in ruby 3.2.1 (2023-02-08 revision 31819e82c8) [aarch64-linux]
2023-03-08T14:25:30.331Z pid=434 tid=7me INFO: See LICENSE and the LGPL-3.0 for licensing details.
2023-03-08T14:25:30.331Z pid=434 tid=7me INFO: Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
2023-03-08T14:25:30.334Z pid=434 tid=7me INFO: Sidekiq 7.0.6 connecting to Redis with options {:size=>5, :pool_name=>"internal", :url=>"redis://redis:6379/1"}
2023-03-08T14:25:30.335Z pid=434 tid=7me INFO: Sidekiq 7.0.6 connecting to Redis with options {:size=>5, :pool_name=>"default", :url=>"redis://redis:6379/1"}
2023-03-08T14:25:30.336Z pid=434 tid=7me DEBUG: Firing startup event
2023-03-08T14:25:30.336Z pid=434 tid=7me DEBUG: Client Middleware: 
2023-03-08T14:25:30.336Z pid=434 tid=7me DEBUG: Server Middleware: Sidekiq::Metrics::Middleware
2023-03-08T14:25:30.336Z pid=434 tid=7me INFO: Starting processing, hit Ctrl-C to stop
2023-03-08T14:25:30.338Z pid=434 tid=7l6 DEBUG: Firing heartbeat event
^C2023-03-08T14:25:38.874Z pid=434 tid=7me DEBUG: Got INT signal
2023-03-08T14:25:38.875Z pid=434 tid=7me INFO: Shutting down
2023-03-08T14:25:38.875Z pid=434 tid=7me INFO: Terminating quiet threads for default capsule
2023-03-08T14:25:38.876Z pid=434 tid=7ku INFO: Scheduler exiting...
2023-03-08T14:25:38.876Z pid=434 tid=7me DEBUG: Firing quiet event
2023-03-08T14:25:38.876Z pid=434 tid=7me DEBUG: Firing shutdown event
2023-03-08T14:25:38.979Z pid=434 tid=88i INFO: Pausing to allow jobs to finish...
2023-03-08T14:25:40.728Z pid=434 tid=7me INFO: Bye!

我的sidekiq.yml如上所示,我希望它显示这些值

l7mqbcuq

l7mqbcuq1#

我正在维护sidekiq-cron,在某些地方,我们需要访问一些Sidekiq设置。
从Sidekiq v7开始,您可以通过以下方式访问所有配置选项(甚至Redis设置):

Sidekiq.default_configuration

您可以在此文件中查看如何在其他Sidekiq版本中访问它们:我们最终添加了这个抽象来清理代码,因为Sidekiq API在最新版本中已经发生了变化。

相关问题