cronとGatewayの基礎—止まっても気づける自動化へ


cronとGatewayの基礎—止まっても気づける自動化へ

cronへジョブを登録しただけでは、自動化は完成しません。ジョブを起動するプロセスが止まれば、予定だけが残り、処理は実行されません。Hermes AgentではローカルGatewayがスケジュール実行を支えます。

四つの状態を別々に見る

1. Job defined:ジョブ定義が存在する
2. Job active:無効化されていない
3. Scheduler alive:Gatewayなど実行基盤が動いている
4. Last run succeeded:直近の実行が成功した

「active」と「次回動く」は同義ではありません。直近成功があっても、その後Gatewayが止まれば次回は実行されません。

冪等性を持たせる

同じ対象日で二回実行しても、二重投稿や二重登録が起きない処理を冪等と呼びます。

  • 日次ノート:同じ自動生成範囲を更新する
  • メール通知:Message-IDで送信済みを除外する
  • API登録:外部IDまたは一意キーで重複を確認する
  • WordPress:同じslugの下書きがあれば新規作成しない

cronは遅延、再実行、手動復旧が起こる前提で設計します。

リトライを分類する

一時的な通信障害や429・503は待って再試行できます。一方、認証失敗、権限不足、入力不正は何度繰り返しても直りません。

“`text
一時障害 → 指数バックオフ + ジッター + 上限
認証失敗 → 停止して再認証を通知
入力不正 → 対象を隔離して人へ通知
外部書き込み不明 → 再試行前に実行済みか照会
“`

タイムアウト後にAPIが実は成功していた場合、無条件再試行で二重登録になります。外部状態を確認してから再実行します。

監視する指標

  • 最終成功時刻
  • 直近の所要時間
  • 連続失敗回数
  • 対象件数と処理件数
  • 省略・警告件数
  • 次回予定時刻
  • Gateway稼働状態

「失敗したらDiscordへ通知」だけでは、Discord接続そのものが失敗した時に気づけません。重要な自動化では、ローカルログ、別サービス、監視ツールなど複数の観測点を検討します。

まとめ

信頼できるcronは、予定時刻に動く処理ではなく、止まった時に分かり、安全に再実行できる処理です。ジョブ、実行基盤、直近成功、次回予定を別々に確認します。

参考にした一次情報

  • [Hermes Agent Cron Scheduling](https://hermes-agent.nousresearch.com/docs/user-guide/features/cron)
  • [Hermes Agent Security—cron_mode](https://hermes-agent.nousresearch.com/docs/user-guide/security/)
  • [AWS Architecture Blog—Exponential Backoff and Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)

Back to top