2011-01-31 7 views
1

私はHerokuでWebアプリケーションを実行する予定です。私はいくつかのバックグラウンドジョブを処理するための宝石を探しています。すなわち電子メールを送信したり、APIを介してエンコードサービスにファイルを提出するいくつかのメソッドを呼び出すことができます。背景の宝石に関する提案を探す

これまでのところ、resqueとdelayed_jobがあります。私はリークについての良いことを聞いて、それはまた、より一般的な宝物のようですin its category。 Ryan Batesはdelayed_jobで優れたscreen castを行っています。しかし、delayed_jobにはいくつか問題があると聞きました。すなわち、いくつかの領域ではそれほど安定ではない。だから私は聞く。

HerokuにはRedis-to-Goがあります。彼らは5メガバイトを提供する無料の計画を持っています。私が再雇用する場合、バックグラウンドジョブを処理するのに十分なこの5MB計画ですか?私はバックグラウンド・ジョブのためだけに多くを費やしてしまいたくありません。

私がresqueと一緒に行った場合、バックグラウンドジョブを実行するために別のデータベースが必要になるだけであることを心配しました。私がRedisを他の何かのために使っていたなら、おそらくそれは価値があるでしょう。バックグラウンドジョブを処理するだけの価値があるのでしょうか?

代替宝石を検討する必要がありますか?もしそうなら、

+3

私はHerokuのバックグラウンドジョブのためにHeroku労働者を購入しなければならないという印象を受けました。私はあなたが特別なプロセス(delayed_jobなど必要なものすべて)を実行する方法がないと思います。 – cam

+0

Herokuのバックグラウンドタスクは、使用しているキューイング宝石(遅延ジョブやResqueなど)とは無関係に5セントと時間がかかります。 –

答えて

1

delayed_jobとresqueの両方がかなりうまく機能します。バックグラウンド要求の量が増加するにつれて再スケーリングが良くなるはずです。

resqueのredisの使用は、タスク要求に限定する必要があります。バックグラウンドタスクによって必要とされる大きなデータオブジェクトは、バックグラウンドワーカーキュー以外の場所に格納する必要があります。たとえば、エンコードするバックグラウンドワーカーに送信されるファイルは、resqueで使用されるredisキューではなく、AWS S3またはその他の永続ストアに格納する必要があります。

delayed_jobまたはresqueを使用する場合、経費を要するバックグラウンドワーカーを実行する必要があります。必要に応じてバックグラウンドワーカーを動的に開始および停止するためのオートスケーリングソリューションを検討することもできます。

例としてhttp://s831.us/h3pKE6を参照してください。

0

私たちはdelayed_jobを非常に集中的に使用し、数百の同時電子メールを送信しています。とてもうまく機能しています。完璧に。はい、それは労働者のための$ 36/moの費用がかかります。しかし、1人のワーカーは多くの仕事をやっています...かなり複雑な電子メール(多くのdbase検索)が1秒間に送信されます。

関連する問題