TL;DR

Ruby のバックグラウンドジョブのライブラリ。1 つのプロセスの中でスレッドを使い、多くのジョブを同時に処理する。

なぜ必要か

処理をバックグラウンドのジョブとして実行できる。Sidekiq の README によると、どの Ruby アプリケーションでも使え、Rails と Active Job にも対応している。

仕組み

ジョブのキューには Redis(または Valkey、Dragonfly)を使う。ジョブのクラスは Sidekiq::Job を include し、インスタンスメソッドの perform に処理を書く。クラスメソッドの perform_async でキューに入れ、bundle exec sidekiq で起動したプロセスが処理する。

OSS 版のほかに、機能を拡張した有償の Sidekiq Pro と Sidekiq Enterprise がある。

例

Getting Started の例は次のとおりである。

class HardJob
  include Sidekiq::Job
 
  def perform(name, count)
    # do something
  end
end
 
HardJob.perform_async('bob', 5)
HardJob.perform_in(5.minutes, 'bob', 5)

注意点

perform の引数は文字列、整数、真偽値のような、JSON で表せる単純な型にする必要がある。

関連

出典