De crawler heeft ruim voldoende gelijktijdige verzoeken geconfigureerd. Toch pauzeert hij telkens wanneer hij de proxy-pool om nog een adres vraagt. Meer proxies toevoegen verandert niets aan die pauze.

Een gangbaar middleware-patroon roept requests.get(pool_url) aan binnen process_request(). Dat is een synchrone netwerkbewerking op een pad dat geacht wordt samen te werken met de asynchrone engine van Scrapy. Terwijl de aanroep wacht, kan hij ongerelateerd werk op dezelfde gebeurtenislus-thread ophouden.

Er zitten twee verzoeken in de taak

Het ene verzoek haalt een endpoint bij de pooldienst. Het andere gebruikt dat endpoint om de bestemming te benaderen. Meet en rapporteer ze afzonderlijk. Een trage pool-API kan elke gekozen proxy traag laten lijken voordat de applicatie er zelfs maar verbinding mee heeft.

Gebruik een asynchrone ontdekkingsintegratie die de geïnstalleerde Scrapy-versie ondersteunt, of haal en ververs een begrensde lokale endpointset buiten het kritieke pad per verzoek. Als blokkerend werk moet worden uitbesteed, geef die uitvoerder dan eigen limieten en time-outafhandeling; een onbeperkte wachtrij verplaatst de vertraging alleen maar.

Doe niet automatisch nog een ontdekkingsaanroep voor elk verzoek. Een kortlevende cache of een geleasede batch kan de afhankelijkheid van de pooldienst verminderen, mits de levensduur past bij het werkelijke endpointbeleid van de dienst.

Definieer wat een mislukte opzoeking betekent

Een leeg of mislukt poolantwoord mag de proxy-metadata niet stilzwijgend verwijderen en een direct verzoek toestaan. Kies een expliciete uitkomst: wachten binnen het taakbudget, falen, of een goedgekeurd gecacht endpoint gebruiken.

Houd ook de eigen route van de pool-API vrij. Als het een interne dienst is, kan het versturen van de privé-hostnaam via precies de proxy die helpt hem te selecteren een circulaire afhankelijkheid creëren.

Zodra ontdekking werkt zonder ongerelateerd werk te blokkeren, onderzoek dan de gewone proxy-transactie. Dat zijn afzonderlijke reparaties, en hun timing verdient afzonderlijke velden in het log.

Gerelateerde artikelen