4

resque-scheduler を使用して、ユーザーの入力に基づいて動的 cron をスケジュールしています。私のサーバー スタックは、パッセンジャー + nginx 構成の Ubuntu 12.04 を使用しています。

Resque::Scheduler.dynamic = true を設定し、 set_schedule メソッドを persist: trueオプションで使用して動的ジョブをスケジュールしました

最初の問題は、パッセンジャーエラーが発生していたことでした:-

Redis::InheritedError (Tried to use a connection from a child process without reconnecting. You need to reconnect to Redis after forking.

だから私は私の resque イニシャライザに次のブロックを導入しました:-

PhusionPassenger.on_event(:starting_worker_process) do |forked|
  if forked
    # Reconnect Resque Redis instance.
    Resque.redis.client.reconnect
  end
end

新しい動的ジョブを再起動またはスケジュールするたびに、静的スケジュールが読み込まれ、動的スケジュールが失われます。ランダムな時間でスケジュールを更新していても、静的なスケジュールのみをロードします。

4

1 に答える 1

0

動的スケジュールのロードの問題は、gem バージョンにあります。github で最新の resque スケジューラ リリースを参照してください。これで問題が解決するはずです (約 10 日前に修正されています)。

于 2013-12-24T13:03:38.307 に答える