Scrapy AutoThrottle a través de un proxy: ranuras y latencia
Mantenga las ranuras de descarga del sitio objetivo separadas de las rutas del proxy e interprete la latencia como la ruta de solicitud observada.
De forma predeterminada, Scrapy asigna las ranuras de descarga según el dominio de la URL de la solicitud. Dar a una solicitud un proxy HTTP no convierte esa URL en el nombre de host del proxy. Por tanto, las solicitudes a sitios distintos pueden conservar ranuras distintas mientras comparten un mismo intermediario.
AutoThrottle ajusta el retardo de cada ranura usando la latencia de descarga observada. El límite estándar de concurrencia por dominio y el retardo mínimo de descarga siguen aplicándose.
Compruebe la agrupación antes de cambiar el algoritmo
Un middleware personalizado puede asignar request.meta["download_slot"], sustituyendo la selección normal de ranura. Algunas extensiones de proxy usan su propia agrupación. Revise esos ajustes si sitios no relacionados parecen compartir un mismo limitador.
A la inversa, asignar una ranura distinta para cada proxy puede permitir que varios proxies contacten el mismo objetivo a la vez. Eso puede vulnerar un límite de todo el sitio que el rastreador debía respetar. Elija la clave de ranura según el recurso que se protege.
El retardo incluye la ruta que utilizó
Scrapy mide la latencia desde el envío de la solicitud hasta la recepción de las cabeceras HTTP. Una solicitud transportada por un proxy puede incluir en esa observación el retardo de cola y reenvío del intermediario. AutoThrottle no obtiene un tiempo de procesamiento separado solo del origen.
Aumentar la concurrencia no puede hacer que esa medición aísle el sitio web. Mantenga la cortesía con el objetivo y la capacidad del proxy como límites separados cuando ambos importan. Un proxy compartido puede necesitar un presupuesto de concurrencia adicional entre las ranuras de los objetivos, mientras que cada objetivo conserva su propia política de ritmo.