Skip to main content
エラーハンドリングのドキュメントが拡張されています。コアパターンは以下に示されています。

概要

Shannon Python SDKは、堅牢なアプリケーションを構築するための包括的なエラーハンドリングを提供します。すべてのSDK例外はShannonErrorから派生しています。

例外階層

予算とタスクの失敗処理: 予算超過とタスクの失敗は例外ではありません。失敗を確認するにはstatus.statusをチェックしてください。トークン使用量とコストの合計を確認するには、list_tasks()を使用し、返されたタスクの要約からtotal_token_usageを読み取ります。

基本的なエラーハンドリング

Try-Catchパターン

特定のエラータイプ

接続エラー

ネットワークおよび接続の問題を処理します:

コストと失敗の確認

ステータスから失敗を監視し、list_tasks()を介して使用量の合計を取得します:

タイムアウトエラー

長時間実行される操作を処理します:

レート制限

APIのレート制限を適切に処理します:
インポートの明確さ:from shannon import ConnectionErrorはSDKの例外を指します(Pythonの組み込みConnectionErrorではありません)。レート制限にはRateLimitErrorを、ネットワークの問題にはConnectionErrorを使用してください。バックオフやサーキットブレーカーなどの高度なパターンは参照実装です — 環境で検証してください。

バリデーションエラー

無効なパラメータを処理します:

タスク失敗処理

タスク実行の失敗を処理します:

エラーロギング

包括的なエラーロギングを実装します:

サーキットブレーカーパターン

レジリエンスのためにサーキットブレーカーを実装します:

ベストプラクティス

  1. 特定の例外を常にキャッチし、一般的なものの前にする
  2. 指数バックオフを伴う再試行ロジックを実装する
  3. エラーをログに記録してデバッグと監視を行う
  4. 重要な操作のためにフォールバックオプションを提供する
  5. ハングを避けるために合理的なタイムアウトを設定する
  6. 送信前に入力を検証する
  7. 外部依存関係に対してサーキットブレーカーを使用する

次のステップ

エラーハンドリングの実例を参照

非同期使用

非同期エラーパターン

完全な再試行例

実行するには:
再試行ロジックを使用するタイミング:
  • ネットワークの不安定さ
  • 一時的なサービスの問題
  • レジリエンスが必要なプロダクションシステム
再試行しないべきタイミング:
  • タイムアウト(タスクが複雑すぎる)
  • APIエラー(無効なパラメータ)
  • 認証失敗