質問

最近、WindowsのアップグレードとCFサーバーの再起動後にColdFusionスケジュールされたタスクが再開されなかった問題がありました。スケジュールされたタスクの健康を監視し、それらが適切に実行されていない場合に警告される方法はありますか?または、その情報のログファイルを解析するためのタスクを作成する必要がありますか?

役に立ちましたか?

解決

Admin APIを使用して、スケジュールされたタスクに関する情報を取得できます。以下は、各スケジュールされたタスクに関する情報を含む一連の構造を返します。その後、配列をループして、last_run変数を確認できます。

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />

他のヒント

スケジュールされたタスクが最も一般的なレベルで機能していることを確認する場合は、1つの方法が「ハートビート」タスクをスケジュールして、頻繁に実行することです。タスクを設定してカウンターを更新し、タイムスタンプを変更し、電子メールを送信し、毎朝「I'm Alive」SMSをトリガーし、ログエントリを追加します。これにより、すべてのタスクが実行されていることはわかりませんが、サーバーが生きており、スケジュールされたタスクシステム自体が機能していることがわかります。

別のオプションは、タスクの一種のフロントコントローラーである単一のエントリポイントを介してタスクを集中させることです。これにより、CF管理者ではなく、個々のタスクのセットアップと個々のタスクの構成がコードに委任されます。マスタータスクコントローラーには、各タスクのトリガーコードが含まれます。必要に応じて頻繁に実行するようにコントローラーをスケジュールします。したがって、多くのタスクではなく1つのタスクです。コントローラーでは、このようなもの、おそらく5分ごとに:

Check the time/date, compare against set of tasks
If time (or frequency) is A, run tasks P,Q,R, log success/failure
If time is B, run tasks S,T, log success/failure
If time is C, run tasks U,V,X, log success/failure    
Send heartbeat with success/failure codes for all relevant tasks

このアプローチの利点の1つは、より豊かなゴー/ノーゴーワークフローを表現できることです。セミランダム化周波数でタスクを実行し、他のタスクの成功または失敗に基づいてタスクを実行するなどです。インジケーター、あなたのタスクコントローラーが実際に実行したことを知っています。

別の簡単なオプション。各タスクの出力ファイルを有効にし、独立したCronジョブでこれらのファイルを確認します。必要な時間内にファイルが変更された場合、スケジューラタスクが実行されたことを意味するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top