HerokuはDelayedJobの実行に月額$ 15を請求し、cronタスクの実行に月額$ 3 /月を請求することを確認しました。それを完全にスキップして、自分のcronタスクを手動で実行することは可能ですか?それとも、彼らは私がcronタスクを実行していることをどういうわけか理解していますか?
「自分のcronタスクを手動で実行する」とはどういう意味か完全にはわかりません。特にcronの場合、サーバーであるため、制御できるcrontab
にアクセスする必要があります。別の方法がある場合はおそらく問題ありませんが、Herokuで実行している場合、アプリは特定のサーバーに関連付けられておらず、サーバーは実行間で変更します。
また、前回チェックしてから変更されていない限り、毎日のcronタスクを無料で実行できますが、1時間あたりの料金は月額3ドルです。
[〜#〜]編集[〜#〜]:はい、毎日のcronは無料です。 http://addons.heroku.com/ を参照してください。
Heroku gem をコンピューターにインストールすると、次のようにcronタスクを手動で実行できます。
$ heroku rake cron
(in /disk1/home/slugs/xxxxxx_aa515b2_6c4f/mnt)
Running cron at 2010/04/25 10:28:54...
これにより、Herokuの毎日/毎時のcronアドオンとまったく同じコードが実行されます。つまり、これが機能するには、アプリケーションにcron
タスクを含むRakefileが必要です。次に例を示します。
desc "Runs cron maintenance tasks."
task :cron do
puts "Running cron at #{Time.now.strftime('%Y/%m/%d %H:%M:%S')}..."
# TODO: your cron code goes here
end
ここで、heroku rake cron
コマンドを任意のUnixサーバーのcrontabに追加するか、LinuxまたはMac OSXを実行している場合はパーソナルコンピューターのcrontab
に直接追加するだけで、スケジュールを設定できます。 Herokuアプリケーションのcronジョブは、料金を請求されることなく、自由に使用できます。
はい、基本的に実行されているローカルサーバーでcronジョブを正常に使用しました
$ heroku rake <rake task>
必要な間隔で。私はアスペンと竹のスタックの両方で使用しました。
2020年の答えを更新する:
Heroku Scheduler を使用できます。これは、Heroku独自のアドオンであり、1回限りのdynoを使用してコマンドをスケジュールできます(ジョブの実行時間に対してのみ料金を支払うようにします)。アドオン自体は無料ですが、実際にはcronを使用することはできませんが、毎日、1時間ごと、または10分ごとの単純な頻度で使用できます。また、ジョブがスケジュールされた時間に実行されるか、まったく実行されないという保証はありません。
他にも サードパーティのアドオン cron式を使用して1回限りのdynoを実行し、柔軟性を高め、Herokuスケジューラよりも復元力を高めることができます(適切な開示、私の会社はそのようなアドオンの作成者です-オン)。
カスタムクロックプロセス( 詳細はこちらを参照 )を使用することもできます。これは、基本的に、1つのdynoがあるか、他のdynoで実行されるスポーンタスクを処理することを意味します。これは通常、前述のアドオンを使用するよりもコストがかかりますが、プロセスをよりきめ細かく制御でき、Herokuのみに依存しているため、より安定している可能性があります。
Railsアプリを実行していて、そのようにスケジューリングを設定している場合は、rufus-schedulerのようなgemをインストールすることもできます。これが何らかの理由で悪い習慣かどうかはわかりませんが、私が自分のアプリで何をしているのか、そしてそれはうまくいくようです。