Rails + Sidekiq: Sidekiq.options[:concurrency] returns 10 而不是 3,这是我的 config/sidekiq.yml 文件中的值
Rails + Sidekiq: Sidekiq.options[:concurrency] returns 10 instead of 3, which is the value in my config/sidekiq.yml file
我将 Sidekiq 与 Rails 一起使用,返回的并发值似乎是错误的。 Sidekiq.options[:concurrency]
returns 10 而不是 3,这是我的 config/sidekiq.yml
文件中的值:
:concurrency: 3
staging:
:concurrency: 3
production:
:concurrency: 3
:queues:
- critical
- default
- low
为什么返回了错误的值?
不要相信您在 Rails 控制台中看到的内容。 (因为 Rails 不会读取 config/sidekiq.yml
,所以不需要知道这些设置)
相信您在 Sidekiq 控制台中看到的内容。 (因为当 sidekiq 启动时它读取 config/sidekiq.yml
以应用其设置)
举例工人:
class ExampleWorker
include Sidekiq::Worker
def perform
puts Sidekiq.options[:concurrency]
end
end
打开 Rails 控制台并同步 运行 作业:
ExampleWorker.new.perform
10
这是the default。
现在 运行 它是异步的:
ExampleWorker.perform_async
=> "628773ecad22c4b19e4d08a4"
打开Sidekiq等待作业运行:
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Running in ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Booting Sidekiq 6.0.3 with redis options {:id=>"Sidekiq-server-PID-2663", :url=>nil}
2019-11-03T22:59:13.803Z pid=2663 tid=ovyfd5os3 INFO: Starting processing, hit Ctrl-C to stop
2019-11-03T22:59:18.176Z pid=2663 tid=ovyfdnd37 class=ExampleWorker jid=628773ecad22c4b19e4d08a4 INFO: start
3
2019-11-03T22:59:18.279Z pid=2663 tid=ovyfdnd37 class=ExampleWorker jid=628773ecad22c4b19e4d08a4 elapsed=0.104 INFO: done
Sidekiq 正在正确应用设置。
我将 Sidekiq 与 Rails 一起使用,返回的并发值似乎是错误的。 Sidekiq.options[:concurrency]
returns 10 而不是 3,这是我的 config/sidekiq.yml
文件中的值:
:concurrency: 3
staging:
:concurrency: 3
production:
:concurrency: 3
:queues:
- critical
- default
- low
为什么返回了错误的值?
不要相信您在 Rails 控制台中看到的内容。 (因为 Rails 不会读取
config/sidekiq.yml
,所以不需要知道这些设置)相信您在 Sidekiq 控制台中看到的内容。 (因为当 sidekiq 启动时它读取
config/sidekiq.yml
以应用其设置)
举例工人:
class ExampleWorker
include Sidekiq::Worker
def perform
puts Sidekiq.options[:concurrency]
end
end
打开 Rails 控制台并同步 运行 作业:
ExampleWorker.new.perform
10
这是the default。
现在 运行 它是异步的:
ExampleWorker.perform_async
=> "628773ecad22c4b19e4d08a4"
打开Sidekiq等待作业运行:
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Running in ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2019-11-03T22:59:13.786Z pid=2663 tid=ovyfd5os3 INFO: Booting Sidekiq 6.0.3 with redis options {:id=>"Sidekiq-server-PID-2663", :url=>nil}
2019-11-03T22:59:13.803Z pid=2663 tid=ovyfd5os3 INFO: Starting processing, hit Ctrl-C to stop
2019-11-03T22:59:18.176Z pid=2663 tid=ovyfdnd37 class=ExampleWorker jid=628773ecad22c4b19e4d08a4 INFO: start
3
2019-11-03T22:59:18.279Z pid=2663 tid=ovyfdnd37 class=ExampleWorker jid=628773ecad22c4b19e4d08a4 elapsed=0.104 INFO: done
Sidekiq 正在正确应用设置。