Scrapy AutoThrottle über einen Proxy: Slots und Latenz
Halten Sie die Download-Slots der Zielseite getrennt von Proxy-Routen und deuten Sie Latenz als den beobachteten Anfragepfad.
Standardmäßig vergibt Scrapy Download-Slots anhand der Domain der Anfrage-URL. Gibt man einer Anfrage einen HTTP-Proxy, wird diese URL nicht zum Hostnamen des Proxys. Anfragen an verschiedene Seiten können daher unterschiedliche Slots behalten, während sie einen Vermittler teilen.
AutoThrottle passt die Verzögerung jedes Slots anhand der beobachteten Download-Latenz an. Das übliche Nebenläufigkeitslimit pro Domain und die minimale Download-Verzögerung gelten weiterhin.
Gruppierung prüfen, bevor der Algorithmus geändert wird
Eine eigene Middleware kann request.meta["download_slot"] zuweisen und damit die normale Slot-Auswahl überschreiben. Manche Proxy-Erweiterungen verwenden eine eigene Gruppierung. Prüfen Sie diese Einstellungen, wenn unabhängige Seiten einen Drosselungsmechanismus zu teilen scheinen.
Umgekehrt kann ein eigener Slot je Proxy dazu führen, dass mehrere Proxys dasselbe Ziel gleichzeitig kontaktieren. Das kann ein seitenweites Limit unterlaufen, das der Crawler einhalten sollte. Wählen Sie den Slot-Schlüssel nach der Ressource, die geschützt werden soll.
Die Verzögerung enthält den genutzten Pfad
Scrapy misst die Latenz vom Senden der Anfrage bis zum Empfang der HTTP-Header. Eine über einen Proxy übertragene Anfrage kann die Wartezeit und Weiterleitungsverzögerung des Vermittlers in diese Beobachtung einschließen. AutoThrottle erhält keine separate Bearbeitungszeit allein des Ursprungs.
Mehr Nebenläufigkeit macht diese Messung nicht zu einer isolierten Messung der Website. Behandeln Sie Rücksicht auf das Ziel und Proxy-Kapazität als getrennte Limits, wenn beides zählt. Ein gemeinsam genutzter Proxy braucht möglicherweise ein zusätzliches Nebenläufigkeitsbudget über die Ziel-Slots hinweg, während jedes Ziel seine eigene Ratenpolitik behält.