2011-10-19 8 views
1

私は、herokuで2時間ごとにバックグラウンドプロセスを実行する最も効率的な方法を考えています(電子メール/統計収集などを送信するなど) 2時間ごとにdelay_jobsキュー(dj宝石に基づいて)に項目を貼り付け、その後すぐに英雄の作業者が拾い上げるのですか?アプリが生産された後Cronとdelayed_job - Herokuとの両方でタンデムを使用

さらにそれに、私は右の費用対効果の高いアプローチを考えてジョブを実行するために労働者をスピンアップして、後でそれをシャットダウンhirefire持っているだろうのですか?

私は考慮すべき他のアプローチはありますか?私はこのような遅れて仕事をしていませんでした。これは、開発前と基本的な制作テストの前に行われました。私はそれをすべてheroku cronに基づいていますが、cronジョブの負荷が増えれば実用的ではないようです。

価値ある代替アプローチの指針は高く評価されています!

+0

+1 "hirefire"です。私はこれまで知らなかった。 cron + DJを使用するあなたのアイデアは、私には分かりやすいようです。おそらくそれがやっているのは、DJの仕事を待ち合わせているからです。 – jdl

+0

私は、cronが実際に大きなタスクを実行するときに、単にキューに入れるのではなく、cron * now *の負荷を意味していました。私。私はクラスメソッドを起動するためにcronタスクを使用しています。本当に私はキューに物事をプッシュするためだけにcronを使うべきです。それは理にかなっていますか? – Dave

+1

はい、私たちは同じことを話していると思います。 Cronはキューをロードする必要があります(これは非常に軽量でなければなりません)。 DJの仕事は重い持ち上げを実行する必要があります。 – jdl

答えて

2

休暇中の労働者に支払うように、従業員がフルタイムの仕事をしていないと、Hirefireは確かに行く方法です。

タイミングのもう1つのオプションは、利用可能な:run_at引き数を使用して完了したときに遅延ジョブを再スケジューリングすることです。私は彼らが仕事の数を見ていると思うので、これをテストしたことはありませんが、仕事の人はそれを行うでしょう。

関連する問題