在 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
(注意,
concurrency
在这里被注释掉,希望“强制”它使用初始化程序:
Sidekiq.configure_server do |config|
config.concurrency = 88
config.redis = {
url: ENV.fetch("SIDEKIQ_REDIS_URL")
}
end
# configure_client omitted
这个初始化程序不会产生错误,但是当我做上面的
CLI.instance
事情时,这个值没有被使用。所以要么初始化程序不允许配置它(如果是这样,那can在那里配置什么?)或者我转储配置的方式不准确(如果是这样,我是怎么做的do ?)。
我似乎找不到这方面的好文档,而且配置的内部结构似乎在版本 7 中发生了变化。
我正在维护
sidekiq-cron
,我们需要在某些地方访问其中一些 Sidekiq 设置。
从 Sidekiq v7 开始,您可以通过以下方式访问所有配置选项(甚至是 Redis 设置):
Sidekiq.default_configuration
您可以在此文件中检查如何在其他 Sidekiq 版本中访问它们:https://github.com/sidekiq-cron/sidekiq-cron/blob/master/lib/sidekiq/options.rb.