Heroku Schedulerアドオンがリリース

by Mitsuhiro Okamoto on 11月 15, 2011 at 12:03 午後

Cron 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分単位で指定できます。

Scheduler Dashboard

 

マルチ言語対応(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アドオンがリリース:

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。