0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sidekiqの基本的な使い方 [翻訳]

Last updated at Posted at 2019-09-01

この記事は、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サーバーはワーカーをインスタンス化し、与えられた引数で実行します。その後どのような処理をさせるかは、すべてあなたが書くコード次第です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?