2017-03-31 4 views
1

rufus-schedulerを使ってタスクの一部をスケジュールするRailsアプリケーションがあります。スケジューラは、Railsアプリケーションを起動するunicornスクリプトのafter_forkで初期化されます(参照:https://gist.github.com/jkraemer/3851917)。rufus-schedulerが私のRailsアプリケーションですでに実行されているかどうかをチェックする方法

最近、ユニコーンスケジューラスレッドが、それをホストしているユニコーンプロセスがアクティブな間に強制終了されたシナリオが発生しました。これにより、スケジューラが予告なしにかなりの時間ダウンしてしまいます。

このようなシナリオを処理するアラートと監視システムをセットアップしたいと考えています。 1.スケジューラスレッドが強制終了/中止されたときに警告をスローする。 2. Railsプロセスが実行中の場合は、スケジューラを再起動します。

おそらくcronタスクを介してスケジューラの実行状態を知り、自動再起動を処理する適切な方法は何でしょうか?

答えて

1

rufus-schedulerを見るためにcronタスクを持ってきたら、rufus-schedulerを落と​​して、すべてのスケジューリングにWheneverを使用するだけです。このようにして、100%のクラウドソリューションが得られます。

もう1つの方法として、a)あなたのRailsアプリケーションb)rufus-schedulerスケジュールをホストする別のプロセス(Railsアプリケーションの「スケジュールのみ」のバージョンかもしれません)を使用してください。 blog post)。 Godもあります。

rufus-schedulerからインスピレーションを受けたClockworkを見ると、それらのアプリケーション/複数のプロセスのシーンがdetailになります。

次に、ログを監視してエラーが発生した場合に警告するために、さまざまなツールを参照できます。

更新:

たぶん、この要旨は助けることができる:多くの提案の詳細なリストについてhttps://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2

+1

感謝を。それらを試してみる。私は1分の頻度の下で特定の仕事をスケジュールする必要があったので、100%cronのスケジュールを使用することができませんでした。 – elixir

+0

神のスクリプトによる監視のために、アプリケーションの外部からスケジューラインスタンスにアクセスするにはどうすればよいですか? – elixir

+0

あなたは自分でそのアクセス権を実装する必要があります。 – jmettraux

関連する問題