Skip to content

[機能要望] Firestore バッチおよび外部API呼び出しの例外処理強化(リトライ・フォールトトレランス追加) #16

@Shinoryo

Description

@Shinoryo

概要

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 リトライライブラリ)

その他

  • リトライポリシーは可変にして環境変数で調整可能にする案を推奨。
  • ログにはエラーメッセージのみ記録し、環境変数やパスワードは出力しないよう注意。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions