非同期処理を行うプラグインがいくつかあることは知っています。どれが最高で、その理由は何ですか?
私が知っているものは次のとおりです。
リストにDJ(Delayed Job)を追加します-http://blog.leetsoft.com/2008/2/17/delayed-job-dj
githubの連中は最近、すばらしいレビューを投稿しました:http: //github.com/blog/197-the-new-queue
starling と workingling は、そのようなプロセスが複数ある可能性があり、それらをキューに入れたい場合、非常に興味深いようです (スクリーンキャストを参照)。
また、バックグラウンド プロセスに rake を使用する以前のスクリーンキャストや、おそらく同じ質問に対する別の解決策に関する将来のスクリーンキャストにも興味があるかもしれません。
何かが「最善」の解決策であるかどうかは、解決しようとしている問題によって異なります。最適なソリューションが最も軽量なソリューションである場合もあれば、最も重いソリューションである場合もあります。
BackgroundRbは、Rails のバックグラウンド ジョブ プロセッサの中でおそらく最も多くの機能を備えていますが、最も複雑でもあるため、使いこなすにはより多くの投資が必要になります。BackgroundRb はおそらく、単純なものから複雑なものまで、ほとんどのユース ケースを処理できます。
Ara T. Howard のBackground Job (Bj)について非常に良いことを聞いたことがあります。これは、README を引用すると、Rails の脳死した単純なゼロ管理者のバックグラウンド優先キューです。これははるかに軽量なソリューションであり、結果としてほとんどのシナリオで BackgroundRb よりも適している可能性があります。
頻繁に行われないオフライン バッチ スタイルの処理のソリューションだけが必要な場合はscript/runner
、すべての Rails アプリに付属するソリューションで十分です。
さらに読むには、Rails WikiのHowToRunBackgroundJobsInRailsを参照してください。
Resqueもあなたを助けることができます。
これは、バックグラウンド ジョブを作成し、それらのジョブを複数のキューに配置し、後で処理するための非常に優れたツールです。
Github の担当者が作成して使用しています。
以下の記事は、開始するのに役立つ場合があります。
BackgrounDRb - 長所: フル機能、メッセージング、短所: スレッド (eek - Rails はスレッド セーフではありません!)、複雑
Daemon Generator - 長所: シンプルで、ジョブを実行するだけ!、短所: 派手なメッセージング機能はありません。
Starling + Workling プラグインは非常にシンプルです。さらに、シンプルでテスト済みでスケーラブルな Memcached を使用します。
Cronを使用しています。セットアップもメンテナンスも簡単で、常に機能します。
BackgroundRb はあなたの脳を食べます。
BackgrounDRb はスレッド化されておらず、完全にプロセス ベースです。ユーザーがIOバウンドタスクを同時に処理したい場合にのみ、ユーザーが使用できるスレッドプールの機能があります。
1.1 リリースを試して、私 (私のブログ) またはメーリング リストで問題を知らせてください。