PyPIパッケージ: olostep | 要件: Python 3.11+
インストール
認証
Olostep DashboardからAPIキーを取得してください。クイックスタート
SDKはユースケースに応じて2つのクライアントオプションを提供します:同期クライアント (`Olostep`)
最適な用途: スクリプトやブロッキング操作を好むシンプルなユースケース。
同期クライアントは、非同期/待機に不慣れな場合に簡単に始められるシンプルなブロッキングインターフェースを提供します。
同期クライアントは、非同期/待機に不慣れな場合に簡単に始められるシンプルなブロッキングインターフェースを提供します。
非同期クライアント (`AsyncOlostep`)
最適な用途: 本番アプリケーションや多くの同時リクエストを処理する場合。
非同期クライアントはノンブロッキング操作を提供し、高スループットが必要な本番アプリケーションに推奨されます。
非同期クライアントはノンブロッキング操作を提供し、高スループットが必要な本番アプリケーションに推奨されます。
同期クライアント (Olostep)
同期クライアント (Olostep) は、スクリプトやシンプルなユースケースに最適なブロッキングインターフェースを提供します。
基本的なウェブスクレイピング
バッチ処理
スマートウェブクロール
サイトマッピング
AI駆動の回答
非同期クライアント (AsyncOlostep)
非同期クライアント (AsyncOlostep) は、高性能アプリケーション、バックエンドサービス、および多くの同時リクエストを処理する必要がある場合に推奨されるクライアントです。
基本的なウェブスクレイピング
バッチ処理
スマートウェブクロール
サイトマッピング
AI駆動の回答
SDKリファレンス
メソッド構造
両方のSDKクライアントは、論理的な名前空間に整理された同じクリーンでPython的なインターフェースを提供します:| 名前空間 | 目的 | 主要メソッド |
|---|---|---|
scrapes | 単一URLの抽出 | create(), get() |
batches | 複数URLの処理 | create(), info(), items() |
crawls | ウェブサイトの巡回 | create(), info(), pages() |
maps | リンク抽出 | create(), urls() |
answers | AI駆動の抽出 | create(), get() |
retrieve | コンテンツの取得 | get() |
エラーハンドリング
すべてのSDKエラーを基底例外クラスを使用してキャッチします:自動リトライ
SDKは、RetryStrategy設定に基づいて、一時的なエラー(ネットワーク問題、一時的なサーバー問題)で自動的にリトライします。クライアントを作成する際にRetryStrategyインスタンスを渡すことで、リトライ動作をカスタマイズできます:
高度な機能
スマート入力強制
SDKは、最大限の利便性のためにさまざまな入力フォーマットをインテリジェントに処理します:高度なスクレイピングオプション
カスタムIDを使用したバッチ処理
インテリジェントクロール
フィルタ付きサイトマッピング
回答の取得
コンテンツの取得
ロギング
問題をデバッグするためにロギングを有効にします:INFO (推奨), DEBUG (詳細), WARNING, ERROR
リトライ戦略の設定
RetryStrategyクラスは、オロステップSDKが一時的なAPIエラーをどのように処理するかを制御します。自動リトライと指数バックオフおよびジッターを使用して、プロダクション環境での信頼性の高い操作を確保します。これにより、一時的なネットワーク問題、レート制限、サーバーの過負荷による断続的な失敗を防ぎます。
デフォルトの動作
デフォルトで、SDKは以下のリトライ設定を使用します:- 最大リトライ回数: 5回の試行
- 初期遅延: 2秒
- バックオフ: 指数関数 (2^試行)
- ジッター: 遅延の10-90% (ランダム化)
- 試行1: 即時
- 試行2: 約2-3.6秒の遅延
- 試行3: 約4-7.2秒の遅延
- 試行4: 約8-14.4秒の遅延
- 試行5: 約16-28.8秒の遅延
カスタム設定
リトライが発生する場合
SDKは以下の場合に自動的にリトライします:- 一時的なサーバーの問題 (
OlostepServerError_TemporaryIssue) - タイムアウト応答 (
OlostepServerError_NoResultInResponse)
トランスポートと呼び出し元のリトライ
SDKには2つのリトライレイヤーがあります:- トランスポートレイヤー: ネットワークレベルの接続失敗を処理(DNS、タイムアウトなど)
- 呼び出し元レイヤー: APIレベルの一時的なエラーを処理(
RetryStrategyによって制御)
最大持続時間の計算
設定例
異なるユースケースに対するリトライ戦略の設定例を以下に示します。保守的な戦略
積極的な戦略
リトライなし(即時失敗)
高スループット戦略
ジッターの理解
ジッターは、クライアントが同時にリトライする際の「サンダリングハード」問題を防ぐためにランダム化を追加します。ジッターは次のように計算されます:initial_delay=2.0, jitter_min=0.1, jitter_max=0.9の場合:
- 試行0: base=2.0秒, jitter=0.2-1.8秒, final=2.2-3.8秒
- 試行1: base=4.0秒, jitter=0.4-3.6秒, final=4.4-7.6秒
- 試行2: base=8.0秒, jitter=0.8-7.2秒, final=8.8-15.2秒
ベストプラクティス
本番アプリケーション向け
開発/テスト向け
バッチ操作向け
モニタリングとデバッグ
SDKはDEBUGレベルでリトライ情報をログに記録します:エラーハンドリング
すべてのリトライが尽きた場合、元のエラーが発生します:パフォーマンスの考慮事項
- メモリ: 各リトライ試行は、リクエスト/レスポンスオブジェクトに追加のメモリを使用します
- 時間: リトライが有効な場合、全体の操作時間が大幅に長くなる可能性があります
- API制限: リトライはAPI使用制限にカウントされます
- ネットワーク: リトライ試行によるネットワークトラフィックの増加
詳細なエラーハンドリング
例外階層
Olostep SDKは、さまざまな失敗シナリオに対する包括的な例外階層を提供します。すべての例外はOlostep_BaseErrorから継承されます。
Olostep_BaseErrorから直接継承される3つの主要なエラータイプがあります:
Olostep_APIConnectionError- ネットワークレベルの接続失敗OlostepServerError_BaseError- APIサーバーによって(ある程度)発生するエラーOlostepClientError_BaseError- クライアントSDKによって発生するエラー
なぜ接続エラーが別なのか
Olostep_APIConnectionErrorは、サーバーエラーとは別です。これは、APIがリクエストを処理する前に発生するネットワークレベルの失敗を表します。これらはトランスポートレイヤーの問題(DNSまたはHTTPの失敗、タイムアウト、接続拒否など)であり、APIレベルのエラーではありません。HTTPステータスコード(4xx、5xx)はAPI応答と見なされ、サーバーエラーとして分類されますが、問題を示しています。
推奨されるエラーハンドリング
ほとんどのユースケースでは、基底エラーをキャッチしてエラー名を出力します:OlostepServerError_AuthFailed)は、問題を理解するのに十分な説明を提供します。
詳細なエラーハンドリング
より具体的なエラーハンドリングが必要な場合は、特定のエラータイプを直接キャッチします。OlostepServerError_BaseErrorまたはOlostepClientError_BaseErrorを使用しないでください - これらの基底クラスは、エラーを引き起こしたのがサーバーかクライアントかを示すだけで、誰が修正する責任があるかを示しません。これは、エラーハンドリングロジックに役立たない実装の詳細です。
代わりに、実際の問題を示す特定のエラータイプをキャッチします:
設定
環境変数
| 変数 | 説明 | デフォルト |
|---|---|---|
OLOSTEP_API_KEY | あなたのAPIキー | 必須 |
OLOSTEP_BASE_API_URL | APIベースURL | https://api.olostep.com/v1 |
OLOSTEP_API_TIMEOUT | リクエストタイムアウト(秒) | 150 |