Rails + Sidekiq: Sidekiq.options [: concurrency] возвращает 10 вместо 3, что является значением в моем файле config / sidekiq.yml - PullRequest
2 голосов
/ 03 ноября 2019

Я использую Sidekiq с Rails, и возвращаемое значение параллелизма представляется неверным. Sidekiq.options[:concurrency] возвращает 10 вместо 3, что является значением в моем config/sidekiq.yml файле:

:concurrency: 3
staging:
  :concurrency: 3
production:
  :concurrency: 3
:queues:
  - critical
  - default
  - low

Почему возвращается неправильное значение?

1 Ответ

2 голосов
/ 04 ноября 2019
  • Не верьте тому, что видите в консоли 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

Это по умолчанию .

Теперь запустите его асинхронно:

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 применяет настройку правильно.

...