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