Closed4
ジョブ・スケジューラを実装することでRust力をあげる
ジョブ・スケジューラとは
指定の日時になったら認識のタスクを実行する責務を持つオブジェクトのこと
最低限の要件
- ジョブ・スケジューラに、ジョブを登録・削除・確認できる
- ジョブ・スケジューラが、ジョブのトリガーが有効になったときに、ジョブを実行する
- トリガー条件はCROND形式の文字列とする。その条件が現在時刻を過ぎたときにジョブが実行される
- ジョブ・スケジューラを、開始・停止できる
CROND形式の文字列をパースし、指定時刻と比較演算できる必要がある。よさそうな、CROND形式のパーサーライブラリは以下。cronは基準の日時を指定し、次の該当日時を計算できるのでよさそう。
タスク・スケジューラの既存の実装
- https://github.com/lholden/job_scheduler
- https://github.com/mehcode/schedule-rs
- https://github.com/mvniekerk/tokio-cron-scheduler
job_schedulerは設計がシンプル。ただし非同期の考慮が全くない。tickが呼ばれてジョブの処理が長い場合は登録されている他のジョブの起動が遅れてしまうかもしれない。tokio-cron-schedulerはそのあたりの問題を解消しているようだ。
主なクラス構成
- schedule-rs
- ジョブ = Job
- スケジューラ = Agenda
- job_scheduler
- ジョブ = Job
- スケジューラ = JobScheduler
- tokio-cron-scheduler
- ジョブ = Job
- スケジューラ = JobScheduler
このスクラップは2023/12/01にクローズされました