delayed_job はhttp://github.com/collectiveidea/delayed_jobにあります
delayed_job は cron タスクを実行できますか? 毎晩午前 1 時にスクリプトを実行するなど。または、スクリプトを 1 時間ごとに実行します。
そうでない場合、それを行うことができる適切な宝石は何ですか? また、ブラウザを使用してリモートで監視し、成功とエラーをログに記録できますか?
delayed_job はhttp://github.com/collectiveidea/delayed_jobにあります
delayed_job は cron タスクを実行できますか? 毎晩午前 1 時にスクリプトを実行するなど。または、スクリプトを 1 時間ごとに実行します。
そうでない場合、それを行うことができる適切な宝石は何ですか? また、ブラウザを使用してリモートで監視し、成功とエラーをログに記録できますか?
私はDelayedJobを使用して将来のアイテムをスケジュールしようとするプロジェクトに取り組みました。吸いました。
代わりに、いつでも宝石を使用することをお勧めします。
http://github.com/javan/whenever
cronジョブを定義するための明確な構文を提供するRubygemであるときはいつでも。有効なcron構文を出力し、crontabファイルを書き込むこともできます。Railsアプリケーションでうまく機能するように設計されており、Capistranoでデプロイできます。独立して正常に動作するときはいつでも。
コードは次のようになります(githubから)
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
runner "SomeModel.ladeeda"
end
every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday
runner "Task.do_something_great"
end
これは、その使用方法に関するRailsCastビデオです。
そして対応するASCIICast。
これには、delayed_job よりも cron の方が適していると思います。以前にプロジェクトで使用したことがありますが、バックグラウンドまたは特定の時間にタスクを実行するのに非常に優れています。しかし、定期的に発生する繰り返しのタスクには、cron が最適なツールだと思います。
いつでも(およびそのRailscastを)チェックアウトして、rake タスク (または thor、またはシェル スクリプト、またはその他のもの) を実行できる cron ジョブを簡単にスケジュールします。rake タスクを使用してモデルを更新し、ある種のダッシュボード コントローラーを使用できます。さまざまなステータスを表示します。
また、ClockWork gem を使用することもできます: https://github.com/adamwiggins/clockwork-rails-dj
Clockwork は別のデーモンとして実行され、ジョブ キューイング システムに追加されるか、すぐに実行されるあらゆる種類のジョブをトリガーするために使用できます。
Delayed_Job は、複数のノードに分散できる (または分散できない) ジョブ キューイング システムに適しています。適切なタイミングでジョブをキューに追加するには、別の方法を使用してください。
バックグラウンド タスクをスケジュールするために rake(or runner)/cron/whenever gem を使用していましたが、サーバーの負荷が非常に高いことに気付きました。これは、rake/runner が Rails 環境をロードすることで常に影響を受けるためです。Delayed_Job ワーカーは実行中の Rails デーモンであるため、バックグラウンド タスクが必要になるたびに Rails を常に起動する必要はありません。
夜間の統計とレポートの生成、および特定の間隔でのデータのスクレイピングのために、複数のcrondelayed_jobsを実行しています。これが私がそれをする方法です:
https://aaronvb.com/articles/recurring-delayed-job-with-cron.html
いつでも素晴らしい作品。
私も好きrufus-scheduler
/config/initializers/task_scheduler.rb
次に、そのファイルで:
scheduler = Rufus::Scheduler.start_new
scheduler.every("1m") do
DailyDigest.send_digest!
end
私はもともとこれがここに投稿されているのを見つけました
私はそれを試してみましたが、うまくいきます。
そのリンクを振り返ってみると、私が働きたいと思う唯一の鉄道会社です。彼らはいくつかの多くの宝石を作り、コミュニティに多くを追加しました. 彼らは巨大なチームを持っていることは言うまでもありません!
このための宝石を作成しました:
https://github.com/select/delayed_cron
現在、sidekiq とdelayed_job で動作します。すぐに resque を追加する予定です。これが少し遅れていることはわかっていますが、探していたものとほぼ同じです。