web-dev-qa-db-ja.com

Sidekiqワーカーがトリガーされない

私はバックグラウンドジョブに Sidekiq を使用しています:

ワーカーアプリ/workers/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です。

17
AnkitG

Sidekiqが実行されている場合にも同様の問題が発生しましたが、perform_async return true以外は何もしませんでした。

問題はrspec-sidekiqが私の ":development、:test"グループに追加されたことでした。 rspec-sidekiqを ":test"グループのみに移動することで問題を修正しました。

31
basgys

Railsアプリのルートディレクトリからsidekiqを起動します。たとえば、

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

7

これで良い15分を失った。 Sidekiqが(キュー名を含む)構成ファイルを正しくロードしているかどうかを確認するには、[ビジー]タブのWebインターフェイスに移動すると、プロセスIDが表示され、その下にキューが表示されます。

私たちの場合、mailerのつづりを間違えました(メーラーの正しいActiveJobキューは複数形でmailersです)。

1
sandre89

ワーカーの対象となるキューの名前を指定する必要があります。

例:sidekiq_options再試行:false、:queue => data_import_worker

data_import_workerには、任意の名前を付けることができます。

次に、Webインターフェイスyoursite.com/sidekiqにアクセスすると、キュー「data_import_worker」の現在のワーカーを確認できます。

1
Henley Chiu

同じ問題が発生しました。関数perform_asyncで渡した引数が適切ではないことがわかりました。perform_asyncでクエリ結果を渡すべきではないようです。関数performですべてのクエリを実行する必要があります。

1
alikewmk

私にとってperform_laterを実行すると、キューに入れられますが、キューから削除されることはありません。キュー名をsidekiq.ymlファイルに追加する必要がありました

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

スタンドアロンのsidekiqで実際に複数のワーカーを実行していますか?たとえば、2人のワーカーがいます:ProccessWorker CallbackWorker

私がsidekiqを実行しているとき:bundle exec sidekiq -r ./workers/proccess_worker.rb -C ./config/sidekiq.yml

同時に1人の労働者だけ。

0
ajahongir

私の問題は、単にワーカーファイルが間違ったパスにあることでした。

「project_root/worker /worker.rb」ではなく「project_root/app/worker /worker.rb」にある必要があります

ファイルパスを確認してください!

0
mecampbellsoup

本番コンソールでperform_async(23)を呼び出していましたが、sidekiqがステージングモードで開始されました。

Sidekiqを本番モードで開始した後、物事は非常にうまく機能し始めました。

0
Antony