PyPIパッケージ: olostep | 要件: Python 3.11+
インストール
認証
Olostep DashboardからAPIキーを取得してください。クイックスタート
SDKは、使用ケースに応じて2つのクライアントオプションを提供します:同期クライアント (`Olostep`)
最適な用途: スクリプトやブロッキング操作を好むシンプルな使用ケース。
同期クライアントは、非同期/待機に不慣れな場合でも簡単に始められるシンプルなブロッキングインターフェースを提供します。
同期クライアントは、非同期/待機に不慣れな場合でも簡単に始められるシンプルなブロッキングインターフェースを提供します。
非同期クライアント (`AsyncOlostep`)
最適な用途: 本番アプリケーションや多くの同時リクエストを処理する場合。
非同期クライアントはノンブロッキング操作を提供し、高スループットが必要な本番アプリケーションに推奨されます。
非同期クライアントはノンブロッキング操作を提供し、高スループットが必要な本番アプリケーションに推奨されます。
同期クライアント (Olostep)
同期クライアント (Olostep) は、スクリプトやシンプルな使用ケースに最適なブロッキングインターフェースを提供します。
基本的なWebスクレイピング
バッチ処理
スマートWebクロール
サイトマッピング
AI駆動の回答
非同期クライアント (AsyncOlostep)
非同期クライアント (AsyncOlostep) は、高性能アプリケーションやバックエンドサービス、多くの同時リクエストを処理する必要がある場合に推奨されます。
基本的なWebスクレイピング
バッチ処理
スマートWebクロール
サイトマッピング
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クラスは、Olostep 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 |
ヘルプを得る
リソース
PyPIパッケージ
PyPIで表示
APIキーを取得
無料でサインアップ