複数ドメインにまたがる Scrapy プロキシの同時実行
複数の対象ドメインが同じプロキシ枠を消費する場合は、ダウンローダーの全体同時実行上限を使い、そのアカウントを共有する他のクローラーも考慮します。
各接続先が1つのプロキシ アカウントを使う場合、そのアカウントの同時リクエスト枠は、それらすべての接続先で消費されます。ドメインごとの上限だけでは、この共有の予算を表せません。
最大 20 件の同時リクエストを許す仮想のアカウントでは、余裕を残してクローラーの全体ダウンローダー上限を設定します。
CONCURRENT_REQUESTS = 16
これはあくまで例示的な配分で、すべてのプロバイダーに推奨する値ではありません。Scrapy は CONCURRENT_REQUESTS をダウンローダーの同時リクエストの最大数と定義しています。ドメインごとの制御で同時実行をさらに下げられますが、全体の上限を置き換えるものではありません。
他のクローラーも計算に入れます。それぞれ 16 件のリクエストを許された独立した 2 つのクローラーは、合わせて 20 件の共有枠を超えることがあります。予算を意図的に分割するか、それらのクライアントが集まる場所で共有上限を適用します。
プロバイダーが何を数えるのかも確認します。HTTP リクエスト、開いている TCP 接続、アクティブなトンネル、1 秒あたりのリクエストは別の量です。持続接続と多重化によって、それらの数は食い違うことがあります。したがって、リクエスト同時実行の設定は、接続数やレートの完全な制限にはなりません。
対象サイトのペースは別の制約として保ちます。プロキシ アカウントに未使用の余力があっても、個々の接続先では同時実行を下げるかダウンロード遅延を設けるのが適切な場合があります。