2

Rails アプリの起動時に Sidekiq キューにジョブを追加してデータを更新する必要がありますが、どこで実行するのが最適なのかわかりません。

今、私はこれを私のに書きましたapplication.rb

class Application < Rails::Application
    config.after_initialize do
        MyWorker.perform_async
    end
end

しかし、問題は、sidekiqコマンドを実行すると Rails スタックも読み込まれるため、キューに 2 つのジョブが残ることです。

それを行う他の方法はありますか?これは私にとって初めての大きな Rails アプリであり、Sidekiq を使用するのも初めてなので、物事を正しく理解していないかどうかはわかりません。それは正しいやり方ではないかもしれません。

ありがとう!

4

4 に答える 4

6

Redis 接続と複数のジョブの起動に問題がありました。

私はこれを使用することになりましたが、うまく機能しているようです:

if defined?(Sidekiq)
  Sidekiq.configure_server do |config|
    config.on(:startup) do
      already_scheduled = Sidekiq::ScheduledSet.new.any? {|job| job.klass == "MyWorker" }
      MyWorker.perform_async unless already_scheduled
    end
  end
end
于 2016-08-15T22:37:57.780 に答える
2

おそらく職長はあなたの目的に合っています。

于 2013-07-24T15:27:45.817 に答える