Heroku Schedulerアドオンがリリース
by Mitsuhiro Okamoto on 11月 15, 2011 at 12:03 午後
Heroku Blogにアナウンスがありましたが、Heroku Schedulerがリリースされました。このAdd-onは以前からあったCron Add-onの代替品にあたりますが、より高機能でフレキシブルに使えるものとなっています。そしてなにより無料(one-off Admin Processes としてDynosの稼働時間を計上)です。
Heroku Schedulerではダッシュボード上で、10分ごとから、1時間ごと、毎日の間隔で自由に実行するように設定でき、そしてCron Add-onとは違い(Cronの場合はAdd-onを有効化した時間に依存していた)いつに実行されるかを10分単位で指定できます。
マルチ言語対応(Polyglot)タスク
タスクにはアプリケーション内で動作するものか、Unixシェル上から起動するものが利用できます。
例えばRailsの場合はrakeタスクとして実行します。スケジュールタスクをRailsアプリケーションの中に作成するには、以下のコードをlib/tasks/scheduler.rakeに入れて、カスタマイズすれば良いでしょう。
desc "This task is called by the Heroku scheduler add-on"
task :update_feed => :environment do
puts "Updating feed..."
NewsFeed.update
puts "done."
end
task :send_reminders => :environment do
User.send_reminders
end
もしPythonをFabricの様なデプロイメントツールとともに使っている場合は、fab clean_sessionsの様にタスクを定義することも可能です:
from fabric.api import task
@task def clean_sessions():
url = urlparse(os.environ.get('REDISTOGO_URL'))
db = redis.Redis(host=url.hostname, port=url.port, password=url.password)
db.delete('myapp:sessions')
print 'done.'
その他の言語やフレームワークの場合は、例えば bin/updater.xxxの様に、bin/ フォルダ以下にそのタスクを行う処理を置くようにします。
ジョブのスケジューリング
ジョブのスケジュールを設定したい場合は、アプリケーションのスケジューラダッシュボードを開いて"General Info"から"Scheduler"を右側のAdd-onドロップダウンメニューから選択します。
スケジューラダッシュボード上で、"Add Job..."をクリックし、タスク名および実行頻度、次の実行開始時間を設定します。
注意 : 次の実行時間はUTC(協定世界時)となっています。日本時間に合わせるには、実施したい時間よりも9時間速く設定して下さい。
例えば上記スクリーンショットの様に、rake update_feedをスケジューラへ追加して、"Hourly"と":30"を選択すると、毎時30分の時に実行されます。次にrake send_remindersを、"Daily"と"00:00"で設定すればリマインダが毎晩0:00に送信されるようになります。
Cron Add-onからマイグレーションする場合
既存のCron Add-onユーザは可能なかぎり速くHeroku Schedular Add-onに移行するほうが良いでしょう。より高機能かつ簡単に使える上に無料です。Cronでは単一のreke cronコマンドの実行のみ制限されている上に、日毎や時間毎でのコントロールする術がありません。ShedulerではCron Add-onができた全ての事とそれ以上の事ができます。
もし新しいジョブをできるだけ今までのCronジョブの実行スケジュールに近い様に設定したい場合は、Cron Add-onのダッシュボードから"Scheduled for"情報を見ます。そしてSchedulerダッシュボードに行き、新しいタスクを日毎か時間毎で作成し、Next RunフィールドにCronのジョブに近い値を入力します。タスクにはrake cronを入力します。
トラックバック
このページのトラックバックURL: http://www.typepad.jp/t/trackback/7240/27446503
このページへのトラックバック一覧 Heroku Schedulerアドオンがリリース:

