空のプロキシプール:失敗・待機・承認済みフォールバックの選択
すべてのプロキシが利用できなくなったとき、経路なしで黙って続行するのではなく、停止するか、予算内で待機するか、承認済みのフォールバックを使用します。
ローテーターが最後の有効なエンドポイントを削除します。次のジョブはどうなるでしょうか。
その判断は明示されるべきです。空のリストは、動作するプロキシの特別な種類ではありません。ランダム選択の例外、欠落したメタデータフィールド、None という戻り値は、それぞれ次の層を別の経路へと押しやる可能性があります。
承認済みのプロキシ経路を必要とするジョブでは、ディスパッチ前に次のいずれかの結果を選びます。
- ジョブの残り期限内で、既知の復旧または更新を待つ。
- プールが利用できないという具体的な結果で失敗する。
- 別途構成され承認されたフォールバックを使用する。
プロキシを黙って省略することは、まったく別の方針です。クライアントによっては、環境の既定値や直接経路を有効にしてしまいます。その結果得られる成功した HTTP 応答は、必要な仲介が一度も使われなかったことを隠してしまいます。
空のプロバイダー応答は、すべてのエンドポイントが一時的に冷却中のプールとは区別してください。前者は検出サービスの診断が必要かもしれませんし、後者はすでに復旧時刻が予定されているかもしれません。同じ空のリストを短い間隔のループで取り直しても、どちらにも役立ちません。
プールの状態と下した判断を、秘密情報を除いて報告してください。「有効なプロキシなし。タスクを停止」は、呼び出し元が決して選ぶつもりのなかった経路からの一般的な接続エラーよりも実用的です。