アトトックラボ

2012年7月25日

Heroku Schedulerを使ってみる

Posted by Yoichi Kurusaki

Herokuでバッチ処理を実行するためにSchedulerを使ってみる。

https://addons.heroku.com/scheduler
https://devcenter.heroku.com/articles/scheduler

アプリにSchedulerアドオンを追加

$ heroku addons:add scheduler:standard --app アプリ名
----> Adding scheduler:standard to tbmngdev... done, v19 (free)
      This add-on consumes dyno hours, which could impact your monthly bill. To learn more:
      http://devcenter.heroku.com/addons_with_dyno_hour_usage
      To manage scheduled jobs run:
      heroku addons:open scheduler


アプリにSchedulerアドオンが追加される


2012-07-25 13.07.56.png

scheduler.rake

テスト用にscheduler.rakeを作成してみる。

lib/tasks/scheduler.rake
desc "Task Test"
task :task01 => :environment do
    puts "Task01 start..."



    puts "Task01 done."
end

コマンドラインで実行してみる

scheduler.rakeをherokuのgitにpushし、コマンドラインで実行してみる。

$ heroku run rake task01
Running rake task01 attached to terminal... up, run.1
Task01 start...
Task01 done.

Heroku Schedulerに登録

Heroku Schedulerのrake task01を10分毎に実行するように設定する。


2012-07-25 15.58.34.png

実行された

Herokuのログを確認するとTask01が実行されていた。

2012-07-25T07:06:21+00:00 heroku[run.1]: Starting process with command `bundle exec rake task01`
2012-07-25T07:06:22+00:00 heroku[run.1]: State changed from starting to up
2012-07-25T07:06:27+00:00 app[run.1]: Task01 start...
2012-07-25T07:06:27+00:00 app[run.1]: Task01 done.
2012-07-25T07:06:28+00:00 heroku[run.1]: Process exited with status 0
2012-07-25T07:06:28+00:00 heroku[run.1]: State changed from up to complete


Heroku Schedulerを確認すると、LAST RUNの日時か更新されていた。

2012-07-25 16.11.54.png