Standaard wijst Scrapy downloadslots toe op basis van het domein van de aanvraag-URL. Een aanvraag een HTTP-proxy geven verandert die URL niet in de hostnaam van de proxy. Aanvragen naar verschillende sites kunnen dus verschillende slots behouden terwijl ze één tussenpersoon delen.

AutoThrottle past de vertraging van elk slot aan op basis van de waargenomen downloadlatentie. De standaardlimiet voor gelijktijdigheid per domein en de minimale downloadvertraging blijven gelden.

Controleer de groepering voordat u het algoritme wijzigt

Een aangepaste middleware kan request.meta["download_slot"] toewijzen en zo de normale slotkeuze overschrijven. Sommige proxy-extensies gebruiken hun eigen groepering. Controleer die instellingen als niet-verwante sites één begrenzer lijken te delen.

Omgekeerd kan het toewijzen van een ander slot per proxy meerdere proxy's tegelijk hetzelfde doel laten benaderen. Dat kan een limiet voor de hele site ondermijnen die de crawler hoorde te respecteren. Kies de slotsleutel op basis van de bron die wordt beschermd.

De vertraging omvat het pad dat u hebt gebruikt

Scrapy meet latentie vanaf het verzenden van de aanvraag tot het ontvangen van HTTP-headers. Een aanvraag via een proxy kan de wachtrij- en doorstuurtijd van de tussenpersoon in die waarneming opnemen. AutoThrottle krijgt geen aparte verwerkingstijd voor alleen de oorsprong.

Meer gelijktijdigheid maakt die meting niet tot een geïsoleerde meting van de site. Houd hoffelijkheid jegens het doel en proxycapaciteit als afzonderlijke limieten wanneer beide tellen. Een gedeelde proxy heeft misschien een extra gelijktijdigheidsbudget over de doelslots nodig, terwijl elk doel zijn eigen snelheidsbeleid houdt.

Gerelateerde artikelen