5

Rails 3 アプリを heroku にデプロイしました。私はSidekiqワーカーを持っていますapp/workers/task_worker.rb:

class TaskWorker
  include Sidekiq::Worker
  def perform
    ...
  end
end

TaskWorker.perform_async毎日午前12時1分に実行をスケジュールする方法は?

4

3 に答える 3

5

こちらも見てみるといいかもしれませんsidetiqhttps://github.com/tobiassvn/sidetiq gem は、gem を介して複雑なタイミング表現をサポートしますice_cube

個人的には、sidekiq とシームレスに統合できる gem があると快適だと感じました。

そのようなものはうまくいくはずです:

class TaskWorker
  include Sidekiq::Worker
  include Sidetiq::Schedulable

  recurrence do
    daily.hour_of_day(0).minute_of_hour(1)
  end

  def perform
    # do magic
  end
end

ただし、一部の時間表現にはパフォーマンス関連の問題があるため、この gem を使用する場合は注意してください。https://github.com/tobiassvn/sidetiq/wiki/Known-Issues . 私があなたに与えた表現は、この問題を回避するはずです。

于 2013-11-05T23:56:17.277 に答える
4

Sidetiq が Sidekiq に追加するオーバーヘッドが気に入らないので、別の解決策を探しました。

どうやら Heroku にはあまり知られていない無料のスケジューラ アドオンがあり、10 分ごと、1 時間ごと、または毎日、rake タスクを実行できます。これは cron ジョブに対する Heroku の回答であり、無料のアドオンであることは素晴らしいことです。ほとんどの重要でないスケジューリングで機能するはずです。

Heroku のドキュメントでは、スケジューラは「最善を尽くす」サービスであり、スケジュールされたイベントをときどき (ただしめったに) 見逃す可能性があると述べています。このジョブを実行することが重要な場合は、カスタム クロック プロセスを使用することをお勧めします。カスタム クロック プロセスは信頼性が高くなりますが、dyno 時間にカウントされます。(そのため、他のプロセスと同様に料金が発生します。)

現在、Heroku で推奨されるクロック プロセスはclockworkのようです。

于 2014-12-02T02:54:42.877 に答える
-3

当たり前のことを言っているのですが、その時間に毎晩 Sidekiq ジョブを呼び出す Cron ジョブを持っていて何が悪いのでしょうか?

于 2013-07-06T01:45:15.257 に答える