概要
batch.commit() をはじめとする外部呼び出し(Firestore, Blogger API, AuthorizedSession.post, update 等)で発生する例外を適切にハンドルし、再試行・バックオフ・ログ出力・最終的な失敗通知を追加する。
背景
現状は多くの箇所で例外が未処理であり、1 回の失敗で Cloud Function が中断する。結果として部分的なデータ不整合、通知漏れ、監視不足が発生する恐れがある。
提案内容
- commit_pending_batch に最大試行回数・指数バックオフのリトライを追加。複数回失敗時は例外を再送出して上位で処理。
- send_indexing_notification を try/except で包み、ネットワーク例外やタイムアウトを失敗として記録。必要ならリトライを導入。
- register_blog_urls_to_firestore の Blogger API 呼び出し(execute)をリトライ可能にする(google.api_core.retry または tenacity の利用を検討)。
- update_last_sent_timestamp(doc_ref.update)に対しても例外捕捉/再試行を検討。
- main を広域の try/except で保護し、致命的エラー時でも失敗を通知(メール or ログ)する仕組みを確保。ただし機密情報を出力しない。
- has_last_sent キャッシュと Firestore 書き込みの整合性改善(失敗時の再キュー化や idempotency を考慮)。
- 監視・アラート案内: 重度の例外発生時に Stackdriver/Cloud Monitoring にメトリクスを投げる、または Slack/メールでの即時通知。
- 単体テスト/統合テスト追加: 例外発生時の挙動をテストで担保。
関連する資料・リンク
- google.api_core.retry ドキュメント(Firestore/Google API 用のリトライユーティリティ)
- tenacity (Python リトライライブラリ)
その他
- リトライポリシーは可変にして環境変数で調整可能にする案を推奨。
- ログにはエラーメッセージのみ記録し、環境変数やパスワードは出力しないよう注意。
概要
batch.commit() をはじめとする外部呼び出し(Firestore, Blogger API, AuthorizedSession.post, update 等)で発生する例外を適切にハンドルし、再試行・バックオフ・ログ出力・最終的な失敗通知を追加する。
背景
現状は多くの箇所で例外が未処理であり、1 回の失敗で Cloud Function が中断する。結果として部分的なデータ不整合、通知漏れ、監視不足が発生する恐れがある。
提案内容
関連する資料・リンク
その他