この記事は、The Basics - github.com/mperham/sidekiqの翻訳です。
Sidekiqの基本
最新バージョン 2019-09-22 編集者 Mike Perham
Sidekiqはバックグランドジョブプロセッシングのためのフレームワークです。バックグランドで作業を実行することで、アプリケーションのスケールをより容易にしています。この仕組みは、3つの部分から構成されています。
クライアント
Sidekiqクライアントは任意のRubyプロセス(通常はPumaまたはPassengerプロセス)で実行され、後で実行するジョブ作成の役割を担っています。アプリケーションコードでジョブを作成するには、以下の2つの方法があります。
# 方法1
MyWorker.perform_async(1, 2, 3)
# 方法2
Sidekiq::Client.push('class' => MyWorker, 'args' => [1, 2, 3]) # Lower-level generic API
上記の2つの方法は等価です。ジョブを表すHashオブジェクトを作成し、そのHashオブジェクトをJSON文字列にシリアライズし、その文字列をRedisのキューにプッシュします。
このことから、ワーカーへ渡す引数はシンプルなJSONのデータ型(数値、文字列、真偽値、配列、ハッシュ)でなければなりません。複雑なRubyオブジェクト(Date、Time、ActiveRecordモデル、など)を渡すと適切にシリアライズされません。
Redis
RedisはSidekiqに対してデータストレージを提供します。Redisは、全てのジョブデータ、その実行データ、その履歴データをSidekiq Web UIのために保存しています。
Redisへの接続については、Redisの使用をご覧になってください。
サーバー
各Sidekiqサーバープロセスは、Redisのキューからジョブを取り出し、取り出したジョブを実行する部分を担当します。Webサーバープロセスと一緒にSidekiqは起動するため、Active Recordを含む完全なRails APIを利用することができます。Sidekiqサーバーはワーカーをインスタンス化し、与えられた引数で実行します。その後どのような処理をさせるかは、すべてあなたが書くコード次第です。