LoginSignup
4
1

More than 5 years have passed since last update.

railsでsidekiqのQue(キュー)が実行されない

Last updated at Posted at 2015-12-15

作成したrubyスクリプトを定期的に実行させるために、sidekiqというgemを使うといいと教えてもらいました。下記の記事を参考にしていたのですが、かなりつまづいてしまいました。その際に必要だったことをメモしておきます。

Rails - sidekiqの使い方 - Qiita

perform_async()でエラーが出て、sidekiqが終了する

必要なターミナルは3つでした。railsコンソール、sidekiqとredis-serverです。brewでredisをインストールすると、redis-serverコマンドでPort6379にサーバが立ち上がります。sidekiqを立ち上げるだけではダメでredis-serverも平行して起動していないとダメでした。

redisって何?

メモリ上にKey-Valueストア(KVS)を構築することができるソフトウェアの一つ。 KVSは任意の保存したいデータ(値:value)に対し,対応する一意の標識(キー:key)を設定し,これらをペアで保存するデータベースの一種で,Redisはコンピュータのメインメモリ上にKVSを構築し,外部のプログラムからデータの保存と読み出しができる。 保存する値(value)として様々なデータ構造を利用することができ,文字列,バイナリデータ,リスト,集合(セット),ハッシュなどを保存することができる。

Redisの使い方 ‹ 技術の犬小屋

WebStorageみたいなものかと思います。ここにsidekiqのタスクが登録されていくのかと。

Workerのputsがどこに出力されるのか?

下記のようにファイルのWorkerで文字列を出力するようにしました。この場合の出力先は、railsのコンソールなのかと思っていましたが、sidekiqの方に出力されました。

# app/workers/event_worker.rb
class EventWorker
  include Sidekiq::Worker
  sidekiq_options queue: :event

  def perform()
    puts "perform"
  end
end

いつタスクが実行されるのか?

rails cでコンソールを立ち上げて、EventWorker.perform_async()で"cd8512e529e90aec643a433d"と文字列が返ってきます。おそらく実行されたタスクIDかと思います。sidekiqを立ち上げているターミナルを見ると、"perform"と表示されていました。

4
1
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
4
1