0

私の知る限り、Ruby on Rails のオブザーバー パターンは非同期にはなっていません。つまり、オブザーバーの実行によって、処理中のアクションがブロックされます。

私はdelayed_job gemについて知っていて、とても気に入っていますが、特定の目的には少し重すぎるように見えることがあります。

オブザーバーのコールバックで新しいスレッドを起動するのはどうですか?

そのようなアプローチの長所と短所を見つけようとしてしばらく時間を費やしましたが、失敗しました。

問題は、Observer のスレッド化に重大な欠点があるかどうかです。

4

2 に答える 2

0

sidekiqについて聞いたことがありますか?これは、バックグラウンド処理を行うための新しい「ホット」ジェムです (対 resque またはdelayedjob)。

よくある質問から:

sidekiq はストレージに redis を使用し、マルチスレッド プロセスでメッセージを処理します。resque と同じくらい簡単に設定できますが、生の処理速度に関してはより効率的です。ワーカー コードはスレッド セーフである必要があります。

それについての Railscast もあります ここ.

独自のスレッドを作成するよりも、それを使用することをお勧めします。

于 2012-11-27T21:29:52.810 に答える