34
33

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.

ResqueからSidekiqに移行するときにつまずいたところ

Last updated at Posted at 2012-12-26

Ruby 1.9.3p125
Rails 3.2.8
sidekiq 1.2.1

--

Sidekiqって?

ひとことで言ってしまうと、Resqueのマルチスレッド版。
Resqueはマルチプロセスで動くけど、
Sidekiqはシングルプロセスでマルチスレッド。

Sidekiq
http://mperham.github.com/sidekiq/

Sidekiqの特徴って?

  • Resqueに比べてリソースの節約が出来る。
  • Redis上のスキーマがRedisと同じなので移行が楽
  • Jobの再試行がわりときれいに実装されてると思う。(個人の感想)
  • お金払えば、Sidekiq Proなんていう高機能なのが使える。(知らなかったw)

Sidekiqの大変なところは?

Resqueに比べると、

  • スレッドセーフなコードを書かないといけないのが少し手間かも。

くらいだろうか?

Sidekiqの導入につまづいたところ

Railsのautoloadはスレッドセーフじゃない

autoload_pathsに追加されているPathでSidekiqで使うところは、
eager_load_pathsに書き換え(or併記)しないといけない。

最初に全部読み込まないといけない。

Resqueでよく使うActiveRecord::Base.verify_active_connections!もだめ

ActiveRecord::Base.verify_active_connections!

上記のコードは除去する。
これ、ただ消すだけでいいのかねえ。

thread unsafeだって言われたから消したけど、
実際SidekiqにしてからMysql gone away!みたいに怒られたりはしていない。

感想

浅い記事で申し訳ないのだけど、眠いのでここまで。
Sidekiqのパフォーマンスにはとても満足してます。

今も開発が活発で、関連プロジェクトなども出てきているのでチェックするといいかも!

34
33
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
34
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?