Scrapy AutoThrottle gennem en proxy: slots og latenstid
Hold målwebstedets downloadslots adskilt fra proxy-ruter, og fortolk latenstid som den observerede anmodningsvej.
Som standard tildeler Scrapy downloadslots ud fra anmodningens URL-domæne. At give en anmodning en HTTP-proxy ændrer ikke den URL til proxyens værtsnavn. Anmodninger til forskellige websteder kan derfor beholde forskellige slots, mens de deler én mellemmand.
AutoThrottle justerer hver slots forsinkelse ud fra den observerede downloadlatenstid. Standardgrænsen for samtidighed pr. domæne og den mindste downloadforsinkelse gælder stadig.
Kontroller grupperingen, før du ændrer algoritmen
Et brugerdefineret middleware kan tildele request.meta["download_slot"] og tilsidesætte det normale slotvalg. Nogle proxy-udvidelser bruger deres egen gruppering. Undersøg disse indstillinger, hvis ubeslægtede websteder ser ud til at dele én begrænser.
Omvendt kan tildelingen af et andet slot for hver proxy lade flere proxier kontakte det samme mål samtidigt. Det kan underminere en grænse for hele webstedet, som crawleren skulle overholde. Vælg slotnøglen efter den ressource, der beskyttes.
Forsinkelsen inkluderer den vej, du brugte
Scrapy måler latenstid fra afsendelsen af anmodningen til modtagelsen af HTTP-headere. En anmodning, der bæres gennem en proxy, kan inkludere mellemmandens kø- og videresendelsesforsinkelse i den observation. AutoThrottle får ikke en særskilt behandlingstid for kun oprindelsen.
Øget samtidighed kan ikke få den måling til at isolere webstedet. Hold målhøflighed og proxykapacitet som adskilte grænser, når begge betyder noget. En delt proxy kan have brug for et ekstra samtidighedsbudget på tværs af målslots, mens hvert mål stadig har sin egen hastighedspolitik.