タイムアウトポリシー
ユニバーサルスクレイピングAPIは、制御可能なリクエスト実行、システムの安定性、効率的なリソース管理を確保するために設計された、2段階のタイムアウトポリシーを採用しています。2つの独立したタイムアウト戦略を設計することにより、APIは複雑なネットワーク環境や動的なページ解析シナリオにおいて堅牢なパフォーマンスを提供しながら、リソース枯渇や長時間待機によって引き起こされるシステム障害を効果的に回避できます。
1. グローバル実行タイムアウト
定義: グローバル実行タイムアウトは、APIリクエスト内のすべての命令の累積実行時間を制限するポリシーです。
タイムアウト閾値: 180秒
範囲:
js_instructions
命令セット内のすべてのwait_xxx
シリーズの操作(wait_for_selector
やwait_for_event
など)。- この閾値は、命令実行中の潜在的な待機時間をカバーし、長時間実行されるタスクがシステムリソースを無期限に占有することを防ぎます。
タイムアウト動作:
- 累積実行時間が180秒に達すると、システムはAPIリクエストプロセス全体を強制的に終了し、タイムアウトエラー応答を返します。
- このポリシーは、APIの実行時間制限を確保し、複雑な命令や誤った設定によるリソースの乱用を防ぎます。
2. ページロードタイムアウト
定義: ページロードタイムアウトは、ブラウザの初期化とページリソースのロードフェーズの時間制限に焦点を当てています。
タイムアウト閾値: 30秒(固定値)
範囲:
- ブラウザインスタンス(Puppeteerやその他のブラウザドライバなど)の初期化プロセス。
- HTML、CSS、JavaScript、その他のネットワークリソースを含むページリソースのロード。
タイムアウト動作:
- URLアクセスが失敗した場合、またはページリソースのロード時間が30秒を超えた場合、システムはグローバルタイムアウトを待たずにエラー応答をすぐに返します。
- このポリシーは、アクセスできないターゲットページを迅速に特定し、無効なリソースを長時間待機することを回避することを目的としています。
3. タイムアウト優先順位ルール
- ページロードタイムアウトは優先度が高く、グローバルタイムアウト前にリクエストの実行を中断できます。
- ページロードフェーズ中にタイムアウトが発生した場合、システムは後続の命令実行フェーズに入る前にリクエストプロセスを直ちに終了します。