在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
如上所示,我希望它显示这些值
1条答案
按热度按时间l7mqbcuq1#
我正在维护
sidekiq-cron
,在某些地方,我们需要访问一些Sidekiq设置。从Sidekiq v7开始,您可以通过以下方式访问所有配置选项(甚至Redis设置):
您可以在此文件中查看如何在其他Sidekiq版本中访问它们:我们最终添加了这个抽象来清理代码,因为Sidekiq API在最新版本中已经发生了变化。