Работник Sidekiq не запускается

Я использую Sidekiq для моих фоновых заданий:

У меня есть рабочее приложение/работники/data_import_worker.rb

class DataImportWorker
 include Sidekiq::Worker
 sidekiq_options retry: false

  def perform(job_id,file_name)
    begin
    #Some logic in it .....
  end
 end

Вызывается из файла lib/parse_excel.rb

  def parse_raw_data
      #job_id and #filename are defined bfr
      DataImportWorker.perform_async(job_id,filename)   
  end

Как только я запускаю его из моего действия, рабочий не получает вызов.. Redis работает на localhost:6379

Любая идея, почему это должно происходить. Среда - это Linux.

Ответы

Ответ 1

У меня была аналогичная проблема, когда Sidekiq запускался, но когда я вызывал perform_async, он ничего не делал, кроме return true.

Проблема была rspec-sidekiq была добавлена ​​в мою группу:: development,: test. Я исправил проблему, перемещая rspec-sidekiq только в группу ": test".

Ответ 2

Запустите sidekiq из корневого каталога вашего приложения Rails. Например,

bundle exec sidekiq -e staging -C config/sidekiq.yml

Ответ 3

Вам нужно указать имя очереди, в которой работает рабочий.

Пример: sidekiq_options retry: false, : queue = > data_import_worker

data_import_worker может быть любым именем, которое вы хотите ему предоставить.

Затем, когда вы перейдете к веб-интерфейсу: yoursite.com/sidekiq, вы сможете увидеть текущих сотрудников для очереди "data_import_worker"

Ответ 4

Я столкнулся с одной и той же проблемой, оказалось, что аргумент, который я передал в функции perform_async, не подходит, кажется, что не следует передавать какой-либо результат запроса в perform_async, вы должны выполнить весь запрос в функции.

Ответ 5

Для меня, когда вы выполняете perform_later, он будет помещаться в очередь, но никогда не будет удаляться из очереди. Мне нужно было добавить мое имя очереди в файл sidekiq.yml

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - my_queue

Ответ 6

Потерял 15 минут. Чтобы проверить, правильно ли загружена Sidekiq ваш файл конфигурации (с именами очередей), перейдите в веб-интерфейс на вкладке "Занят", и вы найдете свой идентификатор процесса, а ниже он найдет ваши очереди.

В нашем случае у нас была ошибка с ошибкой mailer (правильная очередь ActiveJob для Mailers mailers, во множественном числе).

Ответ 7

Моя проблема заключалась в том, что файл рабочего файла был неверным.

Нужно быть в "project_root/app/worker/worker.rb", а не "project_root/worker/worker.rb"

Проверьте путь к файлу!

Ответ 8

Действительно ли работает несколько рабочих на автономном sidekiq? например, у меня 2 работника: ProccessWorker CallbackWorker

когда я запускаю sidekiq: bundle exec sidekiq -r./workers/proccess_worker.rb -C./config/sidekiq.yml

только один рабочий за это время.

Ответ 9

Я вызывал perform_async(23) в рабочей консоли, однако мой sidekiq был запущен в режиме постановки.

После того, как я начал работать в режиме Sidekiq, все стало очень хорошо работать.