15

現在、遅延ジョブを使用してジョブを非同期で処理しています。ワーカーを作成する代わりに、この.delayメソッドをよく使用します。

Sidekiq に移行したいのですが、ジョブの種類が多すぎて、すべてがスレッドセーフであることを確認できません。そのため、Delayed Job と Sidekiq を並行して実行し、一度に 1 種類のジョブを移行したいと考えています。

Delayed Job と Sidekiq の両方が.delayメソッドを提供しているため、どうすればこの 2 つを区別できますか? 他に考えられる問題はありますか?

4

3 に答える 3

28

Sidekiq 2.17.1 以降では、Rails イニシャライザのどこかで次のように呼び出します。

Sidekiq.hook_rails!
Sidekiq.remove_delay!

sidekiq_delay接頭辞付きのメソッドなどしかありません。

(公文書)


古いバージョンの Sidekiq の場合:

以下を入れますconfig/initializers/sidekiq.rb

module Sidekiq::Extensions::Klass
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

module Sidekiq::Extensions::ActiveRecord
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

module Sidekiq::Extensions::ActionMailer
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

次にsidekiq_delay、Sidekiq でキューに使用しdelay、Delayed Job でキューに呼び出すことができます。

于 2013-02-20T04:04:37.397 に答える
6

これをお探しの方へ。Sidekiqには、すぐに使用できる設定があることがわかりました。あなたがする必要があるのは、追加Sidekiq.remove_delay!するだけですconfig/initializers/sidekiq.rb

これについては、 https ://github.com/mperham/sidekiq/wiki/Delayed-Extensions で説明しています。

于 2014-05-31T15:42:46.443 に答える
0

Sidekiq には、すべてのクラスにメソッドを追加するmix-inがあるようです。.delayこれがどのように動作するかは 100% わかりませんがdelay、インスタンス レベルで参照している場合は問題が発生する可能性があります。

私のアドバイスは、sidekiqすべてのジョブをライブラリに移動するまで、ジョブごとにライブラリを追加することです。可能であれば、両方のライブラリを同時に含めることを避けることを意味します。

于 2012-11-09T12:35:19.627 に答える