Как я могу просмотреть вывод моей консоли sidekiq локально, используя очередь по умолчанию? - PullRequest
3 голосов
/ 16 марта 2020

Я использую Rails 5. Я хотел бы создать процесс sidekiq, работающий локально с использованием очереди по умолчанию. Мой рабочий класс выглядит примерно так, как показано ниже ...

module Accounting::Workers
  class FileGenerationWorker
    include Sidekiq::Worker

    def perform
      print "starting work ...\n"
      ...

Я настроил свой файл config / sidekiq.yml примерно так, в надежде на ежедневный запуск рабочего в указанное время c (11 : 05:00) ...

:concurrency: 20
:queues:
  - default
    ...
:schedule:
  Accounting::Workers::FileGenerationWorker:
    cron: "0 5 11 * *"
    queue: default

Однако, когда я запускаю свой сервер rails ("rails s"), я не вижу вывод своей инструкции print на консоль или какую-либо выполненную работу, что говорит мне, что мой работник не работает Что еще мне не хватает, чтобы правильно назначить этого работника локально?

1 Ответ

0 голосов
/ 25 марта 2020

Запустите рабочих с

bundle exec sidekiq

Возможно, вам потребуется указать путь к рабочему модулю. Например,

bundle exec sidekiq -r ./worker.rb

Sidekiq сам по себе не поддерживает запись карты :schedule: в файле конфигурации Sidekiq .

Periodi c функциональность job предоставляется в таких расширениях, как sidekiq-scheduler .

Вам необходимо использовать классы, объявленные в extended Sidekiq module , предоставленном в sidekiq-scheduler. Например,

. / Worker.rb

require 'sidekiq-scheduler'

require './app/workers/accounting'

Sidekiq.configure_client do |config|
 config.redis = {db: 1}
end

Sidekiq.configure_server do |config|
 config.redis = {db: 1}
end

. / App / worker / accounting.rb

module Accounting
   # ...
end

module Accounting::Workers
  class FileGenerationWorker
    include Sidekiq::Worker

    def perform
      puts "starting work ...\n"
    end
  end
end

...