Scrapy AutoThrottle a través dun proxy: slots e latencia
Manteña os slots de descarga do sitio obxectivo separados das rutas do proxy e interprete a latencia como a ruta de solicitude observada.
Por defecto, Scrapy asigna os slots de descarga a partir do dominio do URL da solicitude. Darlle un proxy HTTP a unha solicitude non converte ese URL no nome de host do proxy. Por iso, as solicitudes a sitios distintos poden conservar slots distintos mentres comparten un mesmo intermediario.
AutoThrottle axusta o atraso de cada slot usando a latencia de descarga observada. O límite estándar de concorrencia por dominio e o atraso mínimo de descarga seguen aplicándose.
Comprobe a agrupación antes de cambiar o algoritmo
Un middleware personalizado pode asignar request.meta["download_slot"], substituíndo a selección normal de slot. Algunhas extensións de proxy usan a súa propia agrupación. Revise eses axustes se sitios non relacionados parecen compartir un mesmo limitador.
Ao revés, asignar un slot distinto para cada proxy pode permitir que varios proxies contacten o mesmo obxectivo á vez. Iso pode vulnerar un límite de todo o sitio que o rastrexador debía respectar. Escolla a clave de slot segundo o recurso que se protexe.
O atraso inclúe a ruta que utilizou
Scrapy mide a latencia desde o envío da solicitude ata a recepción das cabeceiras HTTP. Unha solicitude transportada por un proxy pode incluír nesa observación o atraso de cola e reenvío do intermediario. AutoThrottle non obtén un tempo de procesamento separado só da orixe.
Aumentar a concorrencia non pode facer que esa medición illase o sitio web. Manteña a cortesía co obxectivo e a capacidade do proxy como límites separados cando ambos importan. Un proxy compartido pode necesitar un orzamento de concorrencia adicional entre os slots dos obxectivos, mentres que cada obxectivo conserva a súa propia política de ritmo.