2011-09-06 8 views
8

Herokuでは毎分タスクを実行して、特定のユーザータスクがタイムアウトする条件が満たされているかどうかを確認します。私はHerokuのcronジョブを1時間に1回しか実行できないので、このような時間を過すタスクを設定する最良の方法は何ですか。私はHerokuでRails 3.1を使用しています。毎分ジョブをスケジューリングするHeokuのRails 3.1

答えて

7

:run_atの自己再起動ジョブでdelayed_jobを使用できます。ソートのこのような何か:どこかで、その後

class YourJob 
    def do_interesting_things 
     #... Do what needs to be done. 
     self.delay(:run_at => 1.minute.from_now).do_interesting_things 
    end 

    def self.start_me_up 
     new.do_interesting_things 
    end 
end 

し、アプリケーションの初期化中:今日のよう

YourJob.start_me_up 
+0

ありがとう - 私は今日それを試してみると、私は答えを受け入れるでしょう:-) –

+0

これはうまくいきましたか?私は1分ごとにレーキ・タスクを実行する必要があります。そして、自分自身を実行させる方法とcronを必要とする方法があるべきだと私は考えています。現在、herokuのcronは1時間ごとに最大値を持っています。 – ylluminate

+0

@yluminate:私は聞いたことはありませんが、うまくいくはずです。試してみて、それがどうなっているか教えてください。 –

8

、次のことができスケジューリング宝石、clockwork。 Herokuは正式にこれをサポートしており、そのドキュメントはhereです。

+0

素晴らしいお返し –

+3

[clockwork](https://devcenter.heroku.com/articles/clock-processes-ruby)にはdynoが必要なので、他のタイプのdynoと同じ費用がかかります(1時間あたり0.05ドル、秒に請求 - 約** $ 35 /月**)。 *「毎分」のスケジューリングを必要としませんが、* 10分ごと、*毎時*、または*毎日(特定の時刻)*で正常である必要がある人は、[Heroku Scheduler](https ://addons.heroku.com/scheduler)、無料のアドオン。 – user664833

+1

時計作業のもう1つの制限は、単一のdyno上でしか実行できないということです。したがって、単一のプロセスが処理できるより多くのスケジュールされた作業があれば、 'delayed_job'ソリューションがうまく動作します。 – Leopd

関連する問題