Rails アプリケーションで非同期ジョブを実行する最良の方法は何ですか?
-
02-07-2019 - |
質問
解決
ムクドリとワーリングはかなり興味深いようです( スクリーンキャスト) そのようなプロセスが複数ある可能性があり、それらをキューに入れたい場合。
あなたも興味があるかもしれません 以前のスクリーンキャスト バックグラウンドプロセスにrakeを使用しており、将来的には同じ質問に対する別の解決策になる可能性があります。
他のヒント
DJ (遅延ジョブ) をリストに追加します - http://blog.leetsoft.com/2008/2/17/layed-job-dj
最近 github の人たちが素晴らしいレビューをくれました: http://github.com/blog/197-the-new-queue
何かが「最善の」解決策であるかどうかは、解決しようとしている問題が何であるかによって決まります。場合によっては、最適なソリューションが最も軽量なソリューションになることもあれば、最も重いソリューションになることもあります。
背景Rb はおそらく最も完全な機能を備えた Rails バックグラウンド ジョブ プロセッサですが、最も複雑でもあるため、使いこなすにはさらに多くの投資が必要になります。BackgroundRb はおそらく、単純なものから複雑なものまで、ほとんどのユースケースに対応できます。
Ara T についてはとても良いことを聞いています。ハワードさんの バックグラウンドジョブ (Bj) README を引用すると、 Rails の脳死状態のシンプルなゼロ管理バックグラウンド優先キュー. 。これははるかに軽量なソリューションであり、結果として、ほとんどのシナリオでは BackgroundRb よりも適している可能性があります。
頻繁に行われないオフラインのバッチ形式の処理のソリューションだけが必要な場合は、 スクリプト/ランナー
すべての Rails アプリに付属しているもので十分です。
さらに詳しく読むには、以下を参照してください。 HowToRunBackgroundJobsInRails から レールウィキ.
Resque も役立ちます。
これは、バックグラウンド ジョブを作成し、それらのジョブを複数のキューに配置し、後で処理するための非常に優れたツールです。
Github のスタッフが作成して使用しています。
以下の記事が開始に役立ちます。
Starling + Workling プラグインは非常にシンプルです。さらに、シンプルでテスト済み、スケーラブルな Memcached を使用します。
背景DRb - 長所:フル機能、メッセージング、短所:スレッド化 (ええと、Rails はスレッドセーフではありません!)、複雑です
デーモンジェネレータ - 長所:シンプルで、ジョブを実行するだけです。短所:そんな派手なメッセージ機能はありません。
うちはクロンを使ってます。セットアップもメンテナンスも簡単で、常に動作します。
BackgroundRb はあなたの脳を蝕みます。
BackgrounDRb はスレッド化されておらず、完全にプロセスベースです。ユーザーが IO バインドされたタスクを同時に処理したい場合に使用できるスレッド プールの機能のみがあります。
1.1 リリースを試して、問題があれば私 (私のブログ) またはメーリング リストに知らせてください。