各接続先が1つのプロキシ アカウントを使う場合、そのアカウントの同時リクエスト枠は、それらすべての接続先で消費されます。ドメインごとの上限だけでは、この共有の予算を表せません。

最大 20 件の同時リクエストを許す仮想のアカウントでは、余裕を残してクローラーの全体ダウンローダー上限を設定します。

CONCURRENT_REQUESTS = 16

これはあくまで例示的な配分で、すべてのプロバイダーに推奨する値ではありません。Scrapy は CONCURRENT_REQUESTS をダウンローダーの同時リクエストの最大数と定義しています。ドメインごとの制御で同時実行をさらに下げられますが、全体の上限を置き換えるものではありません。

他のクローラーも計算に入れます。それぞれ 16 件のリクエストを許された独立した 2 つのクローラーは、合わせて 20 件の共有枠を超えることがあります。予算を意図的に分割するか、それらのクライアントが集まる場所で共有上限を適用します。

プロバイダーが何を数えるのかも確認します。HTTP リクエスト、開いている TCP 接続、アクティブなトンネル、1 秒あたりのリクエストは別の量です。持続接続と多重化によって、それらの数は食い違うことがあります。したがって、リクエスト同時実行の設定は、接続数やレートの完全な制限にはなりません。

対象サイトのペースは別の制約として保ちます。プロキシ アカウントに未使用の余力があっても、個々の接続先では同時実行を下げるかダウンロード遅延を設けるのが適切な場合があります。

関連記事