2016-05-04 12 views
0

デフォルトでは、Sidekiqは指数バックオフでジョブを25回リトライします。デフォルトのリトライ回数とデフォルトの指数バックオフの両方の設定を変更しようとしています。

私はあなたがSidekiq:すべてのワーカーの指数バックオフを設定する

sidekiq_optionsでクラスレベルでそれらの両方を変更することができることを参照してください。私は、アプリケーション全体のためにこれらのデフォルトを変更したい

class WorkerWithCustomRetry 
    include Sidekiq::Worker 
    sidekiq_options :retry => 5 

    sidekiq_retry_in do |count| 
    10 * (count + 1) # (i.e. 10, 20, 30, 40) 
    end 

    def perform(...) 
    end 
end 

sidekiq_retry_in

を再試行してください。すべてのクラスにオーバーライドを追加しないでください。 私はグローバル指数バックオフを変更する方法のいずれかの例を見つけることができませんしかし

Sidekiq.configure_server do |config| 
    config.server_middleware do |chain| 
    chain.add Sidekiq::Middleware::Server::RetryJobs, :max_retries => 5 
    end 
end 

を使用して、デフォルトの最大再試行回数を変更する方法を見つけました。
これは可能ですか?

ありがとうございました

答えて

0

ミドルウェア構成ではサポートされていません。

2つのオプション。 1つは、Server::RetryJobsミドルウェアを拡張し、そこにdef seconds_to_delayを上書きすることです。その後、すぐに提供されるServer::RetryJobsの代わりにカスタマイズされたミドルウェアを使用します。

別の解決策は、Sidekiq::Workerの代わりにWorkerWithCustomRetryをすべての従業員に含めることです。基本的には、あなたのアプリだけのSidekiqデフォルトワーカーの周りにラッパーを作ってください。ミドルウェアからprivateメソッドを再定義するのではなく、Sidekiqのパブリックインターフェイスで動作するため、この2番目のオプションは少し気に入っています。これはあなたの初期化子で

0

変更、例えば:迅速な対応のための

Sidekiq::DEFAULT_WORKER_OPTIONS['retry'] = 5 

https://github.com/mperham/sidekiq/blob/master/lib/sidekiq.rb#L36

+0

感謝。同様の方法で指数バックオフを設定する方法はありますか? – Rex

+0

私はこの方法をモンキーパッチします:https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/middleware/server/retry_jobs.rb#L177 –

+0

素晴らしいです。ありがとうございました – Rex

関連する問題