1

私はHerokuでホストされているRails3.0アプリを持っています。別のRailsサーバーをセットアップして重いバックエンドジョブを実行したいと思います(ユーザープロファイル、アイテムをスキャンし、推奨事項を作成してRedisデータベースに保存します)。

  • フロントエンドサーバーを詰まらせることはありません(つまり、同じフロントエンドRailsサーバーでバックエンドプロセスを実行すると、ユーザーの要求への応答に時間がかかるなど)
  • Railsのクラスとメソッドを使用できるようにする

私の理解は:

  • ワーカーダイノを追加しても、フロントエンドプロセスとバックエンドプロセスが分離されません
  • WheneverまたはDelayed_Jobgemを追加すると、別のバックエンドサーバーで実行できなくなります。

Railsではこの状況が定期的に発生するはずだと思います。これについてはどうすればよいですか?

どうもありがとうございます。

4

1 に答える 1

1
  • 「フロントエンドデータベース」を「詰まらせる」とはどういう意味ですか?あなたはおそらく通常のデータベースを持っているだけであり、それに負担をかけないようにキャッシュと思慮深いクエリを実装する必要があります。SQLデータベースに負荷がかからないようにするには、タスクにRedisでResqueを使用します。
  • 環境をロードすることで、rakeタスクの「Railsクラスとメソッド」にアクセスできます。例えば:task :do_this => :environment { ... }
  • すべてのdynoは、Webワーカー(HTTP要求で使用可能)またはワーカーdyno(その他の場合)であるかどうかに関係なく、他のすべてのdynoから独立しています。

実際には、rakeタスクを作成し、Procfile(Cedarスタックのみ)に追加のサービス(Clockworkなど)を追加するだけで、これをすべてHerokuで実行できます。

于 2012-04-15T22:00:44.037 に答える