2

私は現在、アプリケーションのバックグラウンドジョブを処理するためにResqueを使用しています。現在、5つの異なるキューがあります(非常に速く成長します)。それぞれが、Solrインデックス、リアルタイム通知、スケジュールされたニュースレター、遅延メール、SMSの更新などの作業を行っています。そして現在、ResqueをRailsの宝石として使用しており、Rails環境からResqueを実行しています。

現在、Solrインデックス更新タスクとスケジュールされたニュースレターを別のサーバーに移動することを計画しています。これら2つは重い操作を実行するためです。1つの方法は、railsディレクトリを新しいサーバーにコピーし、rails環境からResqueジョブを実行することです。しかし、私はこれを行うのが苦手です。

もう1つは、resqueタスク用に個別のrakeアプリを作成することです。しかし、問題は、これらのタスクの両方がRailsモデルとRailsテンプレートに大きく関係していることです。次に進む方法がまったくわかりません。

誰かが同様の問題に直面したことがありますか、そしてあなたはどのようにアプリケーションを設計しましたか?

4

1 に答える 1

6

サーバーのプロビジョニングとデプロイにはラバーを使用します。ロールベースのデプロイを行う Capistrano 用のプラグインです。ロールの 1 つは "resque_worker" で、そのロールを持つマシンは resque-pool を起動して作業の処理を開始します。

しかし、これはもっと簡単に行うことができます。アプリケーションを 2 つの異なるマシンにデプロイするだけです。Resque は、さまざまなマシンで作業できるように設計されています。2 台目のマシンが redis サーバーにアクセスできる限り、すべて問題なく動作します。

于 2011-06-24T21:36:38.267 に答える